Обновление: у меня вопрос, зачем нам нужен BigInteger в Java.Почему мы не можем решить вопрос непосредственно с псевдокодом, поскольку он работает на любом другом языке.
Это псевдокод для генерации подпоследовательностей массива.
int[] arr = {1,2,3} ;
int opsize = 2^size_of_array ;
for (int counter = 1; counter < opsize; counter++)
{
for (int j = 0; j < n; j++)
{
if (counter & (1<<j))
print(arr[j] + " ");
}
print new line ;
}
Он работает длякаждый язык, кроме Java.На любом другом языке вывод:
1
2
1 2
3
1 3
2 3
1 2 3
. В Java код:
class Solution
{
public static void main (String[] args) throws java.lang.Exception
{
int[] arr = {1,2,3};
int n = arr.length ; ;
int res = (int) Math.pow(2,n);
for(int i = 1 ; i < res ; i++)
{
for(int j = 0 ; j < n ; j++)
if ((i & (1<<j)) == 1 )
System.out.print(arr[j] + " ");
System.out.println();
}
}
}
. В Java вывод для того же кода:
1
1
1
1
В Java нам нужен BigInteger, чтобы решить тот же вопрос
int opsize = (int)Math.pow(2, n);
for (int counter = 1; counter < opsize; counter++)
{
for (int j = 0; j < n; j++)
{
if (BigInteger.valueOf(counter).testBit(j))
System.out.print(arr[j]+" ");
}
System.out.println();
}