3 条题解
-
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; }
-
1
#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; } -
0
#include<bits/stdc++.h> using namespace std; int l,n,y[126],f[126]; char a[126],b[126]; void dfs(int deep,int yuan,int fu,int x) { if(x==l) { if(yuan>=1&&fu>=2) { for(int i=1;i<=x;i++) cout<<b[i]; cout<<endl; } return ; } if(n-deep+1<l-x) return ; if(yuan+y[n]-y[deep-1]==0||fu+f[n]-f[deep-1]<2) return ; if(a[deep]=='a'||a[deep]=='e'||a[deep]=='i'||a[deep]=='o'||a[deep]=='u') { b[x+1]=a[deep]; dfs(deep+1,yuan+1,fu,x+1); } if(!(a[deep]=='a'||a[deep]=='e'||a[deep]=='i'||a[deep]=='o'||a[deep]=='u')) { b[x+1]=a[deep]; dfs(deep+1,yuan,fu+1,x+1); } dfs(deep+1,yuan,fu,x); } int main() { cin>>l>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+n+1); for(int i=1;i<=n;i++) {y[i]=y[i-1];f[i]=f[i-1]; if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u') y[i]+=1; else f[i]+=1; } dfs(1,0,0,0); }
- 1
信息
- ID
- 214
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- (无)
- 递交数
- 140
- 已通过
- 65
- 上传者