2 条题解
-
2
#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
#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
- 上传者