マインスイーパ ゲームをシミュレートするアルゴリズムを作成しています。行と列の数を入力し、続いて爆弾 (「*」で表されます) と任意の文字で表される空白スペースを入力する必要があります。
出力では、爆弾がある場所に「*」を示し、各空白の境界に爆弾の数を示すマトリックスを出力する必要があります。また、結果のマトリックスを表示する前に、出力に「フィールド #x」が含まれている必要があります。ここで、「x」は出力の番号です。
私のアルゴリズムでは正しい結果が得られていますが、オンライン審査員に送信すると、答えが間違っていると表示されるので、フォーマットの問題である可能性があります. どこで見逃したのですか?演習のリンクはここにあります http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=110102&format=html
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
int l;
int c;
int boleano = 0;
int cont = 1;
while (boleano == 0) {
cin >> l >> c;
if (c <= 0 || l <= 0 || l > 100 || c > 100) {
boleano = 1;
break;
}
char matriz[l][c];
char aux[c];
// ESCANEANDO MATRIZ
for (int i=0; i<l; i++) {
cin >> aux;
for (int j=0; j<c; j++){
matriz[i][j] = aux[j];
}
}
int contador[l+2][c+2];
// ZERANDO MATRIZ CONTADORA
for (int i=0; i<l+2; i++) {
for (int j=0; j<c+2; j++) {
contador[i][j] = 0;
}
}
// ACRESCENTANDO VALORES DAS BOMBAS
for (int i=1; i<l+1; i++) {
for (int j=1; j<c+1; j++) {
if (matriz[i-1][j-1] == '*') {
contador[i-1][j-1]++;
contador[i-1][j]++;
contador[i-1][j+1]++;
contador[i][j-1]++;
contador[i][j+1]++;
contador[i+1][j-1]++;
contador[i+1][j]++;
contador[i+1][j+1]++;
}
}
}
// PRINT FINAL
if (cont >1) {
cout << endl;
}
cout << "Field #" << cont << ":" << endl ;
for (int i=1; i<l+1; i++) {
for (int j=1; j<c+1; j++) {
if (matriz[i-1][j-1] == '*') {
cout << matriz[i-1][j-1];
}
else {
cout << contador[i][j];
}
}
cout << endl;
}
cont++;
}
return 0;
}