dfs全排列

来源:互联网 发布:兄弟连 php 课程表 编辑:程序博客网 时间:2024/05/16 14:04
import java.util.Scanner;import java.math.BigDecimal;public class dfs {    public static int []arr=new int[1000];    public static int []flag=new int[1000];//标志哪些数字已经被用    public static void dfs(int order,int d)    {        if(order==d+1)        {            for(int i=1;i<=d;i++)                System.out.print(arr[i]);            System.out.println();            return;        }        for(int i=1;i<=d;i++)        {            if(flag[i]==0)//如果该数字未被占用            {                arr[order]=i;                flag[i]=1;//将该数字的访问权限置为1                dfs(order+1,d);                flag[i]=0;//重新将该数字的访问权限置为0            }        }    }    public static void main(String[]args) {        Scanner in = new Scanner(System.in);        System.out.print("请输入一个全排列数:");        while (in.hasNextInt())        {            int ans=in.nextInt();//接收输入的数字            System.out.println(ans+"的所有全排列如下:");            dfs(1,ans);        }    }}

0 0
原创粉丝点击