1 条题解
-
0
C :
#include<stdio.h> int a[1000],v[1000],n; void print(){ int i,total=0; for (i=1;i<=n;i++) if(total==0) printf("%d",a[i],total++); else printf(" %d",a[i]); //将每位输出 printf("\n"); //换行 } void DFS(int dep){ int i; if (dep==n) print(); //如果搜到一个结果输出 dep++; //查找当前要处理位 for (i=1;i<=n;i++) { //枚举当前位 if (v[i]) continue; //如果这个数之前被选过就跳过 v[i]=1; //选中当前位 a[dep]=i;//将当前位存入数组 DFS(dep);//搜索下一位 v[i]=0;//取消选中当前位 } } int main(){ scanf("%d",&n); //读入 DFS(0); //深搜 return 0; system("pause"); //暂停(查看结果) }
Java :
import java.util.Scanner; public class Main { static int n = 0; static int [] book,a; public static void main(String[] args) { Scanner cin = new Scanner(System.in); n = cin.nextInt(); book = new int[n+1]; a = new int[n+1]; for(int i = 0; i <= n; i ++) book[i] = 0; dfs(1); } public static void dfs(int i) { if(i>n) { for(int k = 1; k <= n; k++) { System.out.print(a[k]); if(k != n) { System.out.print(" "); }else { System.out.println(); } } }else { for(int k = 1; k <= n; k ++) { if(book[k]==0) { book[k] = 1; a[i] = k; dfs(i+1); book[k] = 0; } } } } }
- 1
信息
- ID
- 2667
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者