网站建设系统服务鞍山seo外包
我们以n=2 为例
我们每次都有选和不选两种 方案,对于每个数字
核心代码
tatic void dfs(int u) { // u代表当前处理的数字if (u > n) { // 终止条件:处理完所有数字for (int i = 1; i <= n; i++) { // 遍历所有数字if (nums[i]) { // 如果选中则输出System.out.print(i + " ");}}System.out.println(); // 换行return; // 返回上一层递归}// 不选当前数字unums[u] = false; // 标记不选dfs(u + 1); // 处理下一个数字// 选当前数字unums[u] = true; // 标记选中dfs(u + 1); // 处理下一个数字}
完整代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;public class Main {static boolean st[] ;static int a[] ;static int n ;public static void main(String[] args) {// TODO Auto-generated method stubn =in.nextInt();
// 初始化st =new boolean [n+1];a = new int[n+1];for(int i=1; i<=n ;i++) {a[i] = i; ;}dfs(1);out.close();}static void dfs(int u ) {if(u>n) {for(int i=1; i<=n ;i++) {if(st[i]) {out.print(i+" ");}}
// 换行out.println();
// 回溯return;}st[u]= false;dfs(u+1);st[u]= true;dfs(u+1);}//快读模板static FastReader in=new FastReader();static PrintWriter out = new PrintWriter(System.out);static class FastReader{static BufferedReader br;static StringTokenizer st;public FastReader() {// TODO Auto-generated constructor stubbr =new BufferedReader(new InputStreamReader(System.in));}String next() {String str ="" ;while(st==null||!st.hasMoreElements()) {try {str = br.readLine();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}st=new StringTokenizer(str);}return st.nextToken();}int nextInt() {return Integer.parseInt(next());}}
}