0

我正在制作一个模拟扫雷游戏的算法。您必须输入行数和列数,然后是炸弹(由'*'表示)和空格,由任何字符表示。

在输出中,您必须打印显示“*”的矩阵,其中有炸弹,以及每个空白区域边界上的炸弹数量。此外,在显示结果矩阵之前,输出必须包含“字段#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;
}
4

1 回答 1

0

你可以插入一个额外的引入一个额外的布尔值,它显示当前循环是否是第一个循环。如果不是并且当前行数不等于 0,则插入额外的新行。如果格式问题是因为需要以下格式:
[Nothing]
Field #1:
*100
2210
1*10
1110
[NewLine]
Field #2:
**100
33200
1*100
[Nothing]
我使用了 [Nothing]指示没有(更多)新行的位置。

于 2013-11-04T19:22:04.967 回答