其他分享
首页 > 其他分享> > 深度搜索专题

深度搜索专题

作者:互联网

蓝桥杯之带分数

 

最近在蓝桥杯中遇到很多的题,类似于将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