1 条题解

  • 0
    @ 2025-4-12 21:33:45

    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"); //暂停(查看结果) 
    }
    
    

    C++ :

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n;
    bool a[11]={0};
    int b[11];
    int print()
    {
    	for(int i=1;i<=n-1;++i)
    	{
    		printf("%d ",b[i]);
    	}
    	printf("%d\n",b[n]);
    }
    int search(int i)
    {
    	for(int j=1;j<=n;++j)
    	{
    		if(a[j]==0)
    		{
    			b[i]=j;
    			a[j]=1;
    			if(i==n)
    			{
    				print();
    			}	
    			else
    			{
    				search(i+1);
    			}
    			a[j]=0;
    		}
    	}
    }
    
    int main()
    {
    	cin>>n;
    	search(1);
    	return 0;
    	
    }
    

    Pascal :

    var i,j,k,m,n:longint;
        a:array[0..1000]of longint;
        b:array[0..1000]of boolean;
    procedure make(t:longint);
    var i:longint;
      begin
       if t=n+1 then
        begin
         write(a[1]);for i:=2 to n do write(' ',a[i]);writeln;
         exit;
        end;
       for i:=1 to n do
        if not b[i] then
         begin
          b[i]:=true;a[t]:=i;
          make(t+1);
          b[i]:=false;
         end;
    end;
    begin
      readln(n);
      make(1);
    end.
    
    
    
    

    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
    397
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者