前提・実現したいこと
HackerRankの問題を解いています。そこで、わからないことがあったので質問させていただきます。
発生している問題・エラーメッセージ
書いたコードの内容自体は合っていると思うのですが、入力に対して、出力で正しい値が得られないことです。解いている問題は補足情報のところに載せています。与えられる正方行列の対角成分の和と反対対角成分の和の絶対値を求める問題です。
また、コードの内容が合っているかどうかの評価判断はリンク先のEditorialのC++のコードです。
input n=3 11 2 4 4 5 6 10 8 -12 の時の正しいoutputは15ですが、該当のソースコードだと4200287になります。。
該当のソースコード
C++
1#include <iostream> 2#include <vector> 3#include <assert.h> 4using namespace std; 5 6 7 8int main(){ 9 int n; 10 cin >> n; 11 vector<vector<int>> arr(n,vector<int>(n)); 12 13 for(int i=0;i<n;i++){ 14 for(int j=0;j<n;j++){ 15 cin >> arr.at(i).at(j); 16 } 17 } 18 19 assert((int)arr.size()== n); 20 21 int sum1,sum2; 22 for(int i=0;i<n;i++){ 23 for(int j=0;j<n;j++){ 24 if(i==j)sum1 += arr.at(i).at(j); 25 if(i+j == (n-1)){ 26 sum2 += arr.at(i).at(j); 27 //cout << sum2 <<endl; 28 } 29 } 30 } 31 cout << abs(sum1-sum2)<< endl; 32 return 0; 33}
試したこと
debugしていく中で、わかったことを書かせていただきます。上のプログラムでコメントアウトしたものをコメントアウトを外して実行すると、出力でほしい値abs(sum1-sum2)の値が正しい値になります。この理由も教えていただけると嬉しいです。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/09 06:30