算法输出正确的答案,但编程挑战给我错误的答案

时间:2013-11-04 18:53:00

标签: c++

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

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

1 个答案:

答案 0 :(得分:0)

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