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]
フィールド #1:
*100
2210
1*10
1110
[NewLine]
フィールド #2:
**100
33200
1*100
[Nothing] [Nothing]
を使用しました(これ以上) 改行がない場所を示します。

于 2013-11-04T19:22:04.967 に答える