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 件のコメント:
コメントを投稿