https://atcoder.jp/contests/abc157/tasks/abc157_b
こちらの問題の正解コードについて質問がございます。
#include <bits/stdc++.h> using namespace std; int A[3][3]; bool ok[3][3]; int main(){ for (int i=0;i<3;++i){ for (int j=0;j<3;++j){ cin >> A[i][j]; } } int n; cin >> n; for (int i=0;i<n;++i){ int b; cin >> b; for (int j=0;j<3;++j){ for (int k=0;k<3;++k){ if(A[j][k] == b) ok[j][k] = true; } } } //ここまででマルバツの配列に変換できた bool bingo = false; for (int i=0;i<3;++i){ int cnt = 0; for (int j=0;j<3;++j) if(ok[i][j]) cnt++; if (cnt == 3) bingo = true; } for (int j=0;j<3;++j){ int cnt = 0; for (int i=0;i<3;++i) if(ok[i][j]) cnt++; if (cnt == 3) bingo = true; } //ここまでで縦横 int cnt = 0; for (int i=0;i<3;++i){ if(ok[i][i]) cnt++; if (cnt == 3) bingo = true; } //ここまでで縦横斜め if (ok[0][2] && ok[1][1] && ok[2][0]) bingo = true; if (bingo) cout << "Yes" << endl; else cout << "No" << endl; }
######質問内容
if (ok[0][2] && ok[1][1] && ok[2][0]) bingo = true;
が何を表しているのかわかりません。最初のbool ok[3][3]
は3×3のfalseで埋められた表で、ok[0][2],ok[1][1],ok[2][0]って左上から斜めのマスを指していると思うのですがそのときしかbingo=trueにならない?となってしまいました。このif文の説明をしていただけましたら幸いです。よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/18 10:13
2020/05/18 11:06
2020/05/20 06:26
2020/05/20 06:54
2020/05/20 12:50
2020/05/20 12:53