500
完成後のケーキとカッターの形を与えられて、ケーキをカッターの形に取り除いて言ったとき完成形になるかって問題
実装の方針はすぐに思いついたけどvector
それが悪夢の始まりだった…
↓動作したコード
#include<string> #include<vector> using namespace std; class GogoXCake{ public: string solve(vector<string>, vector<string>); }; string GogoXCake::solve(vector<string> cake, vector<string> cutter){ int i,j,a,b; int r1 = ((int)cake.size()); int c1 = ((int)cake[0].length()); int r2 = ((int)cutter.size()); int c2 = ((int)cutter[0].length()); for(i = 0; i + r2 <= r1; ++i) for(j = 0; j + c2 <= c1; ++j){ bool ok = true; for(a = 0; a < r2; ++a) for(b = 0; b < c2; ++b) if(cutter[a][b] == '.' && cake[a + i][b + j] == 'X') ok = false; if(ok){ for(a = 0; a < r2; ++a) for(b = 0; b < c2; ++b) if(cutter[a][b] == '.') cake[a + i][b + j] = 'X'; } } bool ok = true; for(i = 0; i < r1; ++i) if(cake[i] != string(c1,'X')) ok = false; string res = ok ? "YES": "NO"; return res; }↓動作しなかったコード
#include<string> #include<vector> using namespace std; class GogoXCake{ public: string solve(vector<string>, vector<string>); }; string GogoXCake::solve(vector<string> cake, vector<string> cutter){ int i,j,a,b; int r1 = ((int)cake.size()); int c1 = ((int)cake[0].length()); int r2 = ((int)cutter.size()); int c2 = ((int)cutter[0].length()); for(i = 0; i + r2 <= r1; ++i) for(j = 0; j + c2 <= c1; ++j){ bool ok = true; for(a = 0; a < r2; ++a) for(b = 0; b < c2; ++b) if(cutter[a][b] == '.' && cake[a + i][b + j] == 'x') ok = false; if(ok){ for(a = 0; a < r2; ++a) for(b = 0; b < c2; ++b) if(cutter[a][b] == '.') cake[a + i][b + j] = 'x'; } } bool ok = true; for(i = 0; i < r1; ++i) if(cake[i] != string(c1,'x')) ok = false; string res = ok ? "YES": "NO"; return res; }お分かりいただけるだろうか。Xが小文字になってる。なんたるミス。
実を言うとこれのせいで1時間位悩んでた。
0 件のコメント:
コメントを投稿