N乘N矩阵对角线差

时间:2016-06-11 12:57:27

标签: c++ algorithm vector

嗨我有以下代码片段来获取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;
}

2 个答案:

答案 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

相关问题