1. 程式人生 > 其它 >掃雷遊戲(搜尋)

掃雷遊戲(搜尋)

技術標籤:1演算法

掃雷遊戲

給定一個N × N的方格矩陣,其中每個格子或者是’*’,表示該位置有一個地雷;或者是’.’,表示該位置沒有地雷:

在這裡插入圖片描述

現在小Hi希望你對於每一個’.’,計算它周圍8個方格中一共有多少顆地雷。並且用計算出的地雷數替換原來的’.’:

在這裡插入圖片描述

Input
第一行包含一個整數N,代表矩陣的大小。 (1 ≤ N ≤ 100)

以下是一個N × N的矩陣,由字元’.‘和’*'組成。

Output
一個N × N的矩陣,表示答案。

在這裡插入圖片描述

#include <bits/stdc++.h>
using namespace std;
char s[
101][101];//存圖 int n,i,j,k,l,a[101][101];//存地雷數 int e[8][2]={{1,1},{1,0},{1,-1},{0,1},{0,-1},{-1,0},{-1,1},{-1,-1}},x,y; //八個方向 int main(void) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%s",s[i]);//二維字串存圖 for(i=0;i<n;i++) for(j=0;j<n;j++) { if(s[i][j]=='.') { for(k=0;k<8;
k++)//遍歷八個方向 { x=i+e[k][0];y=j+e[k][1];//方向位置 if(x<0||y<0||x>n-1||y>n-1)//判斷越界 continue; if(s[x][y]=='*') a[i][j]++; } } } //遍歷輸出 for(i=0;i<n;i++) for(j=0;j<n;j++) { if(s[i][j]=='*')//輸出地雷 printf("%c",s[i][j]); else//輸出周圍八個方向的地雷數 printf("%d"
,a[i][j]); if(j==n-1) printf("\n"); } return 0; }