//从1到m中取n个数,允许重复取数 #include <iostream> using namespace std; int n,m, a[10]; void DFS(int k) { if (k==n) { for (int i=0; i<n; i++) cout<<a[i]<<" "; cout<<endl; } else for (int i=1; i<=m; i++) { a[k]=i; DFS(k+1); } } int main() { cin>>m>>n; DFS(0); }
//从1到m中取n个数,允许重复取数 #include <iostream> using namespace std; int n,m, a[10]; void DFS(int k) { if (k==n) { for (int i=0; i<n; i++) cout<<a[i]<<" "; cout<<endl; } else for (int i=1; i<=m; i++) { a[k]=i; DFS(k+1); } } int main() { cin>>m>>n; DFS(0); }
#include <iostream> using namespace std; int n,m, a[10]; void DFS(int k) { if (k==n) { for (int i=0; i<n; i++) cout<<a[i]<<" "; cout<<endl; } else for (int i=1; i<=m; i++) { int ok=1; for(int j=0;j<=k-1;j++) if(a[j]==i) ok=0 ; if(ok) {a[k]=i; DFS(k+1);} } } int main() { cin>>m>>n; DFS(0); } //从1到m中取n个数,不允许重复取数 #include <iostream> using namespace std; int n,m, a[10]; bool bz[10]; void DFS(int k) { if (k==n) { for (int i=0; i<n; i++) cout<<a[i]<<" "; cout<<endl; } else for (int i=1; i<=m; i++) if ( !bz[i] ) { a[k]=i; bz[i]=true; DFS(k+1); bz[i]=false;} } int main() { cin>>m>>n; DFS(0); } //从1到m中取n个数,不允许重复取数,即排列方法2 #include <iostream> using namespace std; int n,m, a[10]; void DFS(int k) { if (k==n) { for (int i=0; i<n; i++) cout<<a[i]<<" "; cout<<endl; } else for (int i=k; i<m; i++) { int t=a[k];a[k]=a[i];a[i]=t; DFS(k+1); t=a[k];a[k]=a[i];a[i]=t; } } int main() { cin>>m>>n; for (int i=0; i<m; i++) a[i]=i+1; DFS(0); return 0; } //从1到m中取n个数,不允许重复取数,即排列方法2 #include <iostream> using namespace std; int n,m, a[10]; void DFS(int k) { if (k==n) { for (int i=0; i<n; i++) cout<<a[i]<<" "; cout<<endl; } else for (int i=k; i<m; i++) { int t=a[k];a[k]=a[i];a[i]=t; DFS(k+1); t=a[k];a[k]=a[i];a[i]=t; } } int main() { cin>>m>>n; DFS(0); }