我找到了解决此问题的许多解决方案,但我没有得到任何解决方案。谁能给我最简单的解决方案,如果可能的话,请用Java语言给出答案。
Example-
Input : arr[] = {1, 2, 3}
Possible Subset are:{}, {1}, {2}, {3}, {1, 2}, {1, 3},
{2, 3}, {1, 2, 3}
该程序未找到所有子集
class Test
{
static int arr[] = new int[]{1, 2, 3, 4};
// Prints all subarrays in arr[0..n-1]
static void subArray( int n)
{
// Pick starting point
for (int i=0; i <n; i++)
{
// Pick ending point
for (int j=i; j<n; j++)
{
// Print subarray between current starting
// and ending points
for (int k=i; k<=j; k++)
System.out.print(arr[k]+"");
}
}
}
// Driver method to test the above function
public static void main(String[] args)
{
System.out.println("All Non-empty Subarrays");
subArray(arr.length);
}
}
Output-
1
1 2
1 2 3
1 2 3 4
2
2 3
2 3 4
3
3 4
4
This is not finding all subsets like (1,3)...
答案 0 :(得分:1)
如果您没有得到其他人的代码或算法,我想尝试用简单的文字来表达。希望您知道二进制到十进制的转换是如何发生的。
来源:www.wikihow.com
这也会生成重复的集合,但是如果您比较所有集合,则可以避免这些重复的集合。
希望这会有所帮助。
答案 1 :(得分:0)
听起来像是您自己很难理解实际问题。我认为您可以“看到”最终的解决方案(可能的解决方案列表),但不能“简单地”达到目标。
我建议您用笔和一张纸坐下,逐步逐步解决问题,直到您正确理解要实现的目标以及如何思考该问题为止。为了解决它。完成此操作后,将您的想法放入代码中应该会容易得多。
这只是将您的编程问题分解为一系列简单步骤的问题。