Titelbeschreibung
Minesweeper-Spiel ist ein sehr klassisches eigenständiges Spiel. In den Minenfeldern von n Zeilen und m Spalten enthalten einige Gitter Minen (Landminen genannt), und andere Gitter enthalten keine Minen (Nichtlandminen genannt). Wenn der Spieler ein Nicht-Land-Minengitter einschaltet, wird in diesem Gitter eine Zahl angezeigt - ein Hinweis darauf, wie viele der umgebenden Gitter Minengitter sind. Das Ziel des Spiels ist es, alle Nichtlandminen zu finden, ohne Minen freizulegen.
Angesichts der Verteilung der Minen in einem Minenfeld mit n Zeilen und m Spalten ist es nun erforderlich, die Anzahl der Minengitter um jedes Nichtland-Minengitter herum zu berechnen.
Hinweis: Die umgebenden Gitter eines Gitters enthalten die direkt angrenzenden Gitter in den acht Richtungen oben, unten, links, rechts, oben links, oben rechts, unten links und unten rechts.
Eingabeformat Die
erste Zeile besteht aus zwei Ganzzahlen n und m, die durch ein Leerzeichen getrennt sind und die Anzahl der Zeilen bzw. Spalten des Minenfelds angeben.
Die nächsten n Zeilen mit jeweils m Zeichen beschreiben die Verteilung der Minen im Minenfeld. Das Zeichen '*' zeigt an, dass das entsprechende Gitter mir gehört, und das Zeichen '?' Zeigt an, dass das entsprechende Gitter nicht mir gehört. Es gibt kein Trennzeichen zwischen benachbarten Zeichen.
Ausgabeformat Die
Ausgabedatei enthält n Zeilen mit m Zeichen pro Zeile, die das gesamte Minenfeld beschreiben. Verwenden Sie '*', um Minen anzuzeigen, und verwenden Sie die Anzahl der umgebenden Minen, um Nichtlandminen anzuzeigen. Es gibt kein Trennzeichen zwischen benachbarten Zeichen.
Eingabe- und Ausgabebeispieleingang
Nr. 1
3 3
*??
???
?*?
Ausgang Nr. 1
*10
221
1*1
Eingabe # 2
2 3
?*?
*??
Ausgang Nr. 2
2*1
*21
Hinweis / Tipps
Für 100% Daten 1 ≤ n ≤ 100, 1 ≤ m ≤ 100.
Code:
//P2670 扫雷游戏
#include<iostream>
using namespace std;
char ma[110][110];
int main()
{
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
cin >> ma[i][j];
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
if(ma[i][j] == '*') cout << "*";
else
{
int count = 0;
for(int p = i - 1; p <= i + 1; p++)
for(int q = j - 1; q <= j + 1; q++)
if(ma[p][q] == '*') count++;
cout << count;
}
}
cout << endl;
}
return 0;
}