深度优先搜索之n个数的排列组合

思路:方法一:可直接用暴力枚举法

方法二:dfs

此处列出n为3的情况

//step=1设为第一个桶,=2,设为第二个桶,一次类推
public class Algotirhm{
static int n=3;
static int []arr=new int[n+1];
static int []book=new int[n+1];
public static void DFS(int step){
if(step==(n+1)){                        //临界条件前n个桶已放数,当temp==n+1时,表示该输出了

for(int i=1;i<=n;i++)
System.out.print(arr[i]);
System.out.println();
return;
}
for(int i=1;i<=n;i++){
if(book[i]==0){   //==0 表示没放
book[i]=1;   //标记已放
arr[step]=i;//表示第step个桶放的数为i
DFS(step+1);
book[i]=0;//取消时,要设为没放
}
}
return;
}

public static void main(String[] args) {
Scanner s=new  Scanner(System.in);

DFS(1);

}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值