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 {
}
}