首页 > 其他分享 >求幂集(子集)——回溯

求幂集(子集)——回溯

时间:2024-12-17 16:28:40浏览次数:8  
标签:幂集 int void dfs static 回溯 子集 public

有一个含n个整数的数组a,所有元素均不相同,设计一个算法求其所有子集(幂集)。输出:求解结果{} {3}{2}{23}{1}{13}{12}{123}

public static void main(String[] args) { int a[] = {1,2,3};
		 int n = 3;
		 int x[] = new int [n];
		 dfs(a,n,0,x);
}
		public  static void dfs(int a[],int n,int i ,int x[]) {
		 if(i>=n) {
			 printResult(a,n,x);
		 }
		 else {
			 x[i] = 0;
			 dfs(a,n,i+1,x);
			 x[i] = 1;
			 dfs(a,n,i+1,x);
		 }
	 }
		public  static void printResult(int a[],int n,int x[]){
		 int i ;
		 System.out.print("{");
		 for(i =0;i<n;i++) {
			 if(x[i]==1) {
				 System.out.print(a[i]);
				 
				 
			 }
		 }
		 System.out.print("}");
		 System.out.println("");
	 }

这样会使得每次输出的结果都不一样 

标签:幂集,int,void,dfs,static,回溯,子集,public
From: https://blog.csdn.net/qq_62691586/article/details/144516202

相关文章

  • 回溯算法总结
    回溯算法总结组合问题77.组合216.组合总和III17.电话号码的字母组合39.组合总和40.组合总和II131.分割回文串93.复原IP地址78.子集90.子集II491.非递减子序列排列问题46.全排列47.全排列II组合问题77.组合回溯就是用递归枚举所有解递归函数......
  • 【唐叔学算法】第12天:回溯算法-探索所有可能的旅程
    在算法的世界中,回溯算法是一种通过试错来解决问题的方法。它尝试分步解决一个问题,如果在某个步骤中发现之前的选择并不会导致一个有效的解决方案,它将取消上一步甚至是上几步的选择,回退到之前的状态,再尝试另一种可能的解决方案。作为一名Java技术博主,我将带你深入了解回溯算......
  • 【数据结构与算法】回溯算法:LeetCode“排列问题” 求解,解释并模拟递归+回溯的遍历过程
      【作者自述:记录学习笔记,既然写了就让更多的人看到吧!欢迎大家关注交流学习,一步一个脚印持续更新!】【更多推荐笔记】【数据结构与算法】动态规划:解密“完全背包问题”的真相!附LeetCode四大问题的实现-CSDN博客【数据结构与算法】动态规划:解密“0-1背包问题”的真相!附LeetC......
  • C++算法练习-day61——90.子集2
    题目来源:.-力扣(LeetCode)题目思路分析题目要求找出给定数组的所有子集(幂集),但数组可能包含重复元素,要求结果中的子集是唯一的(不包含重复的子集)。为了解决这个问题,我们可以先对数组进行排序,然后在回溯过程中跳过重复的元素,以确保生成的每个子集都是唯一的。代码:#include<v......
  • C++算法练习-day60——78.子集问题
    题目来源:.-力扣(LeetCode)题目思路分析题目要求找出给定数组的所有子集(幂集)。子集是指原数组中任意元素组合形成的数组,包括空集和原数组本身。这个问题可以通过回溯算法(Backtracking)来解决。回溯算法是一种通过探索所有可能的候选解来找出所有解的算法。对于子集问题,我们可以......
  • 力扣 LeetCode 51. N皇后(Day14:回溯算法)
    解题思路:每次进入backtracking都表示进入下一行每个backtracking中处理当前行的各个列,看各列是否合法isValid中因为是一行一行向下遍历的,所以对应的当前行一定满足条件,没有放置过其他皇后,只需要看对应的列是否满足即可是否符合需要看左上45°和右上45°,之所以是往上看,......
  • 4、背包问题(动态规划)(递归,回溯,迭代)
    一、递归,回溯,迭代 在开始回溯算法前,我想先弄清这三个的关系 递归是指一个函数在定义中直接或间接地调用自身,递归表现为调用函数本身,通过将问题分解为子问题来逐步解决。回溯算法会在搜索过程中尝试一个方案,如果发现当前方案无法满足要求,就“回退”到上一个步骤,尝试其他......
  • 回溯算法 part04
    文章参考来源代码随想录491.递增子序列在90.子集II (opensnewwindow)中我们是通过排序,再加一个标记数组来达到去重的目的。而本题求自增子序列,是不能对原数组进行排序的,排完序的数组都是自增子序列了。所以不能使用之前的去重逻辑!1.递归函数参数输入的数组,当前层开始递......
  • 回溯算法简介
    基本思想递归:使用递归的方式实现选择:从根节点开始,逐层搜索树的节点,沿着某一路径深入搜索探索:在搜索的过程中,当遇到一个节点,需要判断是否需要继续搜索该节点的子节点回溯:当探索到某条路径的末尾(树的叶子节点)时或者不满足要求时需要回退到上一个节点特点系统性:对问题的搜索......
  • 25分支限界算法和回溯算法
    回溯算法实际问题:其中回溯算法也可以用于解决n皇后问题#include<iostream>#include<vector>usingnamespacestd;constintN=8;vector<int>col(N,0),diag1(2*N,0),diag2(2*N,0);//标记列和对角线是否有皇后vector<vector<string>>solutions;vector......