深度搜索专题
作者:互联网
蓝桥杯之带分数
最近在蓝桥杯中遇到很多的题,类似于将1-9的数字 全部排列出来,满足一个条件,比如这个带分数的题。就需要用1-9所有的数。
这里就运用深度搜索来做。在一个数组中,将全部的1-9这九个数字全部排列出来。
代码如下:
public class Main { static int[] a = new int[10];//1-9这9个数字是否访问过的状态数组 static int[] b = new int[10];//需要排列的数组 public static void main(String[] args) { dfs(1); } static void dfs(int i) { if (i > 9) { for (int k = 1; k <= 9; k++) { System.out.print(b[k]); } System.out.println(); return;//满足条件后输出 } else { for (int j = 1; j <= 9; j++) { if (a[j] == 0) {//判断是否某某数字已经出现过 a[j] = 1;//将该数字的状态置为1 b[i] = j;//将该位置i置为数字j dfs(i + 1);//跳向下一个数字 b[i] = 0;// 回溯 a[j] = 0;// 回溯 } } } return; } }
标签:专题,int,dfs,带分数,蓝桥,static,数组,深度,搜索 来源: https://www.cnblogs.com/Alei777/p/14622028.html