前提・実現したいこと
プログラミング始めたての初心者です。
https://atcoder.jp/contests/abc107/tasks/abc107_b
こちらの問題を解いて提出したところ1例だけ誤答でした。
サンプル入力はすべて正答で、自分でも入力例をいじって試行しましたが誤答の原因がよくわかりません。
コードのどこに問題があるか、またどのような入力のときに誤答になるか教えていただければ幸いです。
コードを簡潔に説明すると、まず行を最下段から探索してすべて'.'ならば上に詰める。
次に列を右から探索して同様に左に詰める。という処理を行っているつもりです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
(C++ GCC 9.2.1)
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { int H, W; cin >> H >> W; vector<vector<char>> board(101,vector<char> (101,'a')); for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) { cin >> board.at(i).at(j); } } int counth = 0; for (int i = H - 1; i >= 0; i--) { for (int j = 0; j < W; j++) { if (board.at(i).at(j) == '.') { } else { break; } if (j == W - 1) { for (int k = i; k < W; k++) { board.at(k) = board.at(k + 1); } counth++; } } } H -= counth; int countw = 0; for (int j = W - 1; j >= 0; j--) { for (int i = 0; i < H; i++) { if (board.at(i).at(j) == '.') { } else { break; } if (i == H - 1) { for (int k = j; k < W ;k++) { for (int l = 0; l < H; l++) { board.at(l).at(k) = board.at(l).at(k + 1); } } countw++; } } } W -= countw; for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) { cout << board.at(i).at(j); if (j == W - 1) { cout << endl; } } } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/15 11:02