3 solutions
-
2
#include<bits/stdc++.h> using namespace std; const int N=30; int ans[N],n,m; bool st[N]; void dfs(int u,int x) { if(u==m+1) { for(int i=1;i<=m;i++) { cout<<ans[i]<<" "; } cout<<endl; return; } for(int i=x;i<=n;i++) { if(!st[i]) { st[i]=1; ans[u]=i; dfs(u+1,i+1); st[i]=0; } } } int main() { cin>>n>>m; dfs(1,1); return 0; }
-
1
#include<bits/stdc++.h> using namespace std; const int N=30; int n,m; int a[N]; void dfs() { for(int i=1;i<=m;i++) { cout<<a[i]<<" "; } cout<<endl; int cnt=n,q=0; for(int i=m;i>=1;i--) { if(a[i]!=cnt) { q=1; break; } cnt--; } if(q==0) { return ; } int s=0; for(int i=m;i>=1;i--) { if(a[i]!=n-(m-i)) { a[i]++; s=i; break; } } for(int i=s+1;i<=m;i++) { a[i]=a[i-1]+1; } dfs(); } int main() { cin>>n>>m; for(int i=1;i<=m;i++) { a[i]=i; } dfs(); return 0; }
我靠这代码在季总那里拿了瓶脉动!!!
-
-3
#include<bits/stdc++.h> using namespace std; const int N=30; int ans[N],n,m; bool st[N]; void dfs(int u,int x) { if(u==m+1) { for(int i=1;i<=m;i++) cout<<ans[i]<<" "; cout<<endl; return ; } for(int i=x;i<=n;i++) if(!st[i]) { st[i]=1; ans[u]=i; dfs(u+1,i+1); st[i]=0; } } int main() { cin>>n>>m; dfs(1,1); return 0; }
- 1
Information
- ID
- 232
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- # Submissions
- 60
- Accepted
- 17
- Uploaded By