嗨我有以下代码片段来获取N×N数组的差异但它似乎没有给我正确的答案我通过在纸上绘制N×N矩阵并将其计算出来得到算法,它没有给我任何错误,但没有给我我期望收到的答案,我错过了什么
//includes here
int main(){
int n;
int diagOne{0};
int diagTwo{0};
cin >> n;
vector< vector<int> > a(n,vector<int>(n));
for(int a_i = 0;a_i < n;a_i++){
for(int a_j = 0;a_j < n;a_j++){
cin >> a[a_i][a_j];
if (a_i==a_i){
diagOne+=a[a_i][a_j];
}
else if(a_i+a_j==n-1) {
diagTwo+=a[a_i][a_j];
}
}
int sum =abs(diagOne -diagTwo);
}
return 0;
}
答案 0 :(得分:1)
第二个if
中的for
始终为真a_i==a_i
。
答案 1 :(得分:0)
除了@Milos Radosavljevic的答案之外,你的int sum =abs(diagOne -diagTwo);
在每个外循环中都会覆盖自己。要解决此问题,请将其移至外循环外部。 Here is a live demo of the fixed version of your code
请注意,这会计算主对角线和反对角线之和(轨迹减去反轨迹)之间的差异。但是,如果您在元素方面的差异总数之后,则可以do this。