dfs搜索每一位选什么数
#include<cstdio> using namespace std; int n,b[20]; bool a[20]; void dfs(int x,int pre){ for (int i=1;i<=x;i++) printf("%d ",b[i]); //每次都要输出排列 puts(""); if (x==n) return; for (int i=pre+1;i<=n;i++) //递增选择 if (!a[i]) a[i]=1,b[x+1]=i,dfs(x+1,i),a[i]=0; } int main(){ scanf("%d",&n); dfs(0,0); }