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
- 标签
- 递交数
- 222
- 已通过
- 73
- 上传者