3 条题解
- 
  2
using namespace std; int n; int a[100],b[100]; void f() { for(int i=1;i<=n;i++) printf("%d",b[i]); cout<<endl; } void dfs(int x) { if(x==n) { f(); return; } for(int i=1;i<=n;i++) { if(!a[i]) { a[i]=1; b[x+1]=i; dfs(x+1); a[i]=0; } } } int main() { cin>>n; dfs(0); return 0; } ` - 
  0
using namespace std; int a[100],book[100],n;//a为存放数的数组,book为手中有的牌,n为牌的数量 void dfs(int step){ if(step==n+1){//当排列的数超出了牌的数量时结束排列 for(int i=1;i<=n;i++) cout<<a[i];//输出此数 cout<<endl;//换行 return;//返回 } for(int i=1;i<=n;i++){ if(book[i]==0){//判断这个数是否还在 a[step]=i;//如果不在放入a数组中 book[i]=1;//将此张牌设为已放入 dfs(step+1);//继续排列 book[i]=0;//将此牌收回 } } return;//返回 } int main(){ cin>>n;//输入牌的数量 dfs(1);//函数运算 return 0; } - 
  0
#include<bits/stdc++.h> using namespace std; int a[10001],wsh[10001]; int n; void dfs(int step) { if(step==n+1) { for(int i=1; i<=n; i++) { cout<<a[i]; } cout<<endl; return ; } for(int i=1; i<=n; i++) { if(wsh[i]==0) { a[step]=i; wsh[i]=1; dfs(step+1); wsh[i]=0; } } return ; } int main() { cin>>n; dfs(1); return 0; } 
- 1
 
信息
- ID
 - 1305
 - 时间
 - 1000ms
 - 内存
 - 256MiB
 - 难度
 - 6
 - 标签
 - 递交数
 - 267
 - 已通过
 - 87
 - 上传者