我正在制作一个模拟扫雷游戏的算法。您必须输入行数和列数,然后是炸弹(由'*'表示)和空格,由任何字符表示。
在输出中,您必须打印显示“*”的矩阵,其中有炸弹,以及每个空白区域边界上的炸弹数量。此外,在显示结果矩阵之前,输出必须包含“字段#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;
}