gpt4 book ai didi

java - 搜索二维数组中是否存在一行,其总和等于同一二维数组中其他两行的总和

转载 作者:行者123 更新时间:2023-12-01 10:53:49 25 4
gpt4 key购买 nike

我试图迭代整个 2D 数组以找到其总和等于同一 2D 数组中其他两行之和的行。在将 sum2 和 sum3 重置为零之前,我很难弄清楚如何进行比较;

* 对于 sum2:其总和将只是第 (n-1) 行的总和,与 sum3 相同* 只需要找到一种方法进行比较,然后将 sum2 和 sum3 重置为零

boolean compare(int n, int [][] A)
{
int i, j, k, x, y, p, sum, sum2, sum3, total;

//row
for ( i = 0; i < n; i++)
{
sum = 0;
//col
for ( j = 0; j < n; j++)
sum+= A[i][j];

//row
for ( k = 0; k < n; k++)
{
sum2 = 0;
//col
if (k != i)
for ( x = 0; x < n; x++)
sum2 += A[k][x];
}

for ( y = 0; y < n; y++)
{
sum3 = 0;
if ( (y != k) && (y != i) )
for ( p = 0; p < n; p++)
sum3 += A[y][p];
}

total = sum2 + sum3;

if ( sum == (total) )
return true;

}//for ( i = 0; i < n; i++)


return false;

}

非常感谢任何意见

**** 开始吧,我更新了代码如下:

boolean compare(int n, int [][] A)
{

int i, j, k, x, y;

int [] sumArray = new int[n];


for (i = 0; i < n; i++)
{
sum = 0;
for(j = 0; j < n; j++)
sum += A[i][j];

sumArray[i] = sum;
}

for ( k = 0; k < n; k++)
{
for(x = 0; x < n; x++)
{
if( x != k)
{
for(y = 0; y < n; y++)
{
if( (y != x) && (y != k) )
{
if( sumArray[k] == (sumArray[x] + sumArray[y]) )
return true;

}
}

}
}
}

return false;


}

最佳答案

似乎计算每行的总和并将它们放入一维数组中会更容易。这样您就可以以更简洁的方式比较每行的总和,并且还可以避免多次计算每行的总和。

此外,compare() 方法不需要参数 int n,因为您只需检查传入数组的 length 属性即可。

public boolean compare(int[][] arr) {

final int rowLen = arr.length;
int[] sums = new int[rowLen];

// Compute sum of each row
for (int row = 0; row < rowLen; row++) {
int rowSum = 0;
int[] rowArr = arr[row];
for (int col = 0; col < rowArr.length; col++)
rowSum += rowArr[col];
sums[row] = rowSum;
}

// Check if row n equals the sum of any other 2 rows
for (int n = 0; n < sums.length; n++) {
for (int i = 0; i < sums.length; i++) {
for (int j = i + 1; j < sums.length; j++)
if (n != i && n != j && sums[n] == sums[i] + sums[j]) {
// sum of row n equals sums of rows i+j
System.out.println("Sum of row " + n + " is equal to the sums of rows " + i + " and " + j);
return true;
}
}
}

return false;
}

免责声明:未经测试的代码,但它表达了我的观点

关于java - 搜索二维数组中是否存在一行,其总和等于同一二维数组中其他两行的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33724369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com