2 条题解

  • 2
    @ 2024-11-30 15:00:16

    #include<bits/stdc++.h> using namespace std; int n,m; char a[30],c[30]; bool f; void print(){ f=false; for(int i=1;i<=m;i++){ if(c[i]'a'||c[i]'e'||c[i]'i'||c[i]'o'||c[i]=='u') f=true; } if(f){ for(int j=1;j<=m;j++) cout<<c[j]; cout<<endl; }

    } void dfs(int k){ for(int i=1;i<=n;i++){ if(a[i]>c[k-1]){ c[k]=a[i]; if(k==m)print(); else dfs(k+1); } } } int main() { cin>>m>>n; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+1+n); dfs(1); return 0; }

    • 0
      @ 2025-7-5 14:03:44
      #include<bits/stdc++.h>
      using namespace std;
      int n,l;
      char a[105];
      
      char w[105];
      bool vis[256];
      bool check(){//判断单词是否有元音字母和两个辅音字母
      	int yuan=0,fu=0;
      	for(int i=1;i<=l;i++){
      		if(w[i]=='a'||w[i]=='e'||w[i]=='i'||w[i]=='o'||w[i]=='u'){
      			yuan++;
      		}
      		else fu++;
      	}
      	if(yuan&&fu>=2) return 1;
      	return 0;
      }
      void print(){//输出
      	for(int i=1;i<=l;i++) cout<<w[i];
      	cout<<'\n';
      	return;
      }
      void dfs(int t,int s){
      	if(t==l+1){
      		if(check()) print();
      		return;
      	}
      	for(int i=s+1;i<=n;i++){
      		if(!vis[a[i]]){//判重
      			vis[a[i]]=1;
      			w[t]=a[i];
      			dfs(t+1,i);
      			vis[a[i]]=0;
      		}
      	}
      	return;
      }
      signed main(){
      	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
      	cin>>l>>n;
      	for(int i=1;i<=n;i++) cin>>a[i];
      	sort(a+1,a+n+1);//字典序
      	dfs(1,0);
      	return 0;
      }
      
      • 1

      信息

      ID
      214
      时间
      1000ms
      内存
      256MiB
      难度
      4
      标签
      (无)
      递交数
      138
      已通过
      63
      上传者