Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找到给定条件下可能的最小数组_Java - Fatal编程技术网

Java 找到给定条件下可能的最小数组

Java 找到给定条件下可能的最小数组,java,Java,我有一个数组,比如int[]x={1,0,0,2,0,2}。每个元素的功率(2,x[i])之和为13。 我想找到满足相同条件的最小可能数组(每个元素的平方和应该是13)。 请帮帮我。公共作废解决方案(){ 双方程=0; int[]a=新的int[]{2,1,0,5,2,3}; 试一试{ for(int i=0;i0){ binaryArray[i++]=等式1%2; 方程1=方程1/2; } 整数和=0; 列表=新的ArrayList(); 做{ 对于(int j=i-1;j>=0;j--){

我有一个数组,比如
int[]x={1,0,0,2,0,2}
。每个元素的功率(2,x[i])之和为
13
。 我想找到满足相同条件的最小可能数组(每个元素的平方和应该是
13
)。 请帮帮我。

公共作废解决方案(){

双方程=0;
int[]a=新的int[]{2,1,0,5,2,3};
试一试{
for(int i=0;i0){
binaryArray[i++]=等式1%2;
方程1=方程1/2;
}
整数和=0;
列表=新的ArrayList();
做{
对于(int j=i-1;j>=0;j--){
if(二进制数组[j]==0){
我--;
持续
}
sum=sum+(二进制数组[j]*(int)Math.pow(2,i));
我--;
列表.添加(i);
}
}而(i>0);
//最短名单
系统输出打印项次(列表);
//最短列表的长度
System.out.println(list.size());
}最后{
}
}

您的示例数组,每个元素的平方和为5(不是13)。请向我们展示您对此问题的尝试。数组不必大于13个元素,单个元素也不必大于3个。从两个元素的数组开始,尝试每种可能的两个数字的组合,每个数字都在0和3之间,如果不起作用,尝试三个元素的数组,依此类推,直到尝试了十三个元素的数组。实际上,您不需要尝试任何大于两个元素的东西:答案是{2,3}。在我的条件下更正。真的很抱歉。我投票结束这个问题,因为“给我一个codez”
    double equation = 0;
    int[] a = new int[] { 2, 1, 0, 5, 2, 3 };
    try {

        for (int i = 0; i < a.length; i++) {
            equation = equation + Math.pow(2, a[i]);
        }
        System.out.println(equation);

        int equation1 = (int) equation;
        int binaryArray[] = new int[30];
        int i = 0;
        while (equation1 > 0) {

            binaryArray[i++] = equation1 % 2;
            equation1 = equation1 / 2;

        }
        int sum = 0;
        List<Integer> list = new ArrayList<Integer>();
        do {
            for (int j = i - 1; j >= 0; j--) {
                if (binaryArray[j] == 0) {
                    i--;
                    continue;
                }
                sum = sum + (binaryArray[j] * (int) Math.pow(2, i));
                i--;
                list.add(i);
            }
        } while (i > 0);
        // shortest list
        System.out.println(list);
        // length of shortest list
        System.out.println(list.size());

    } finally {

    }

}