我在开发应用程序时突然停止了。
我需要获取Arguments数组的所有可能组合,例如数组看起来像这样
[整数,布尔,字符串]
总的可能组合将是7(2 ^ X - 1,其中X是参数的数量,这是我和朋友在试图解决这个问题时想出的公式)
这里是可能组合的可视化。
[整数,布尔,字符串],
[整数,布尔],
[整数,字符串],
[整数],
[布尔,字符串],
[布尔]和
[字符串]
正如你在可视化中看到的那样,唯一必要的是条目总是相对于彼此具有相同的顺序(整数必须始终在布尔和String之前,并且布尔必须始终在String之前)
我要问的是:
如何找到一系列字符串的每种可能组合,其中组合不限于当前条目的任何特定长度,但仅限于条目相对于彼此的相同顺序?< /强>
如果有人能给我一个正确的方向,那将非常感激。我一直在寻找一些关于找到所有可能价值的帖子,但我找不到任何对我有任何帮助的帖子。
如果需要有关此问题的任何进一步信息,请随时提问
答案 0 :(得分:2)
让我给你提示:
检查十进制数的二进制表示:
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
现在,让我们以这种方式安排你的组合:
[_, _, _]
[_, _, S]
[_, B, _]
[_, B, S]
[I, _, _]
[I, _, S]
[I, B, _]
[I, B, S]
下一步是您实现N位数
答案 1 :(得分:1)
试试这个。
String[] array = {"Integer","Boolean","String"};
for (int i = 1, max = 1 << array.length; i < max; ++i) {
for (int j = 0, k = 1; j < array.length; ++j, k <<= 1)
if ((k & i) != 0)
System.out.print(array[j] + " ");
System.out.println();
}
结果
Integer
Boolean
Integer Boolean
String
Integer String
Boolean String
Integer Boolean String
答案 2 :(得分:0)
您正在考虑组合问题。如果你有(1..N)个参数,你会希望使用输入(1..N)来组合序列。检索组合后 - 您可以使用值(v1,v2,v3)作为argumentList数组的索引来检索特定的对象组合。 使用geeksforgeeks中的以下代码作为参考,您可以在此基础上构建。
// Java program to print all combination of size r in an array of size n
import java.io.*;
class Permutation {
/* arr[] ---> Input Array
data[] ---> Temporary array to store current combination
start & end ---> Staring and Ending indexes in arr[]
index ---> Current index in data[]
r ---> Size of a combination to be printed */
static void combinationUtil(int arr[], int data[], int start,
int end, int index, int r)
{
// Current combination is ready to be printed, print it
if (index == r)
{
for (int j=0; j<r; j++)
System.out.print(data[j]+" ");
System.out.println("");
return;
}
// replace index with all possible elements. The condition
// "end-i+1 >= r-index" makes sure that including one element
// at index will make a combination with remaining elements
// at remaining positions
for (int i=start; i<=end && end-i+1 >= r-index; i++)
{
data[index] = arr[i];
combinationUtil(arr, data, i+1, end, index+1, r);
}
}
// The main function that prints all combinations of size r
// in arr[] of size n. This function mainly uses combinationUtil()
static void printCombination(int arr[], int n, int r)
{
// A temporary array to store all combination one by one
int data[]=new int[r];
// Print all combination using temprary array 'data[]'
combinationUtil(arr, data, 0, n-1, 0, r);
}
/*Driver function to check for above function*/
public static void main (String[] args) {
int arr[] = {1, 2, 3, 4, 5};
int r = 3;
int n = arr.length;
printCombination(arr, n, r);
}
}