7. [2015年NOIP普及组] 扫雷游戏

题目链接

 

 

一个简单的模拟

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<iomanip> 
 5 using namespace std;
 6 int n,m;
 7 char s[105][105];
 8 int map[105][105];
 9 int dx[10]={0,0,0,1,-1,1,1,-1,-1};
10 int dy[10]={0,1,-1,0,0,1,-1,1,-1};
11 bool pd(int x,int y)
12 {
13     if(x>=1&&y<=m&&x<=n&&y>=1)
14     return 1;
15     else return 0;
16 }
17 void find()
18 {
19     for(int i=1;i<=n;i++)
20     {
21         for(int j=1;j<=m;j++)
22         {
23             for(int k=1;k<=8;k++)
24             {
25                 if(map[i][j]!=-1&&map[i+dx[k]][j+dy[k]]==-1&&pd(i+dx[k],j+dy[k])==1)//越界,别忘了i+和j+
26          
27                 map[i][j]++;
28             }
29         }
30     }
31 }
32 int main()
33 {
34     cin>>n>>m;
35     for(int i=1;i<=n;i++)
36     {
37         for(int j=1;j<=m;j++)
38         {
39             cin>>s[i][j];
40             if(s[i][j]=='?') map[i][j]=0;
41             else map[i][j]=-1;
42         }
43             
44 //         cout<<endl;
45     }
46     find();
47     for(int i=1;i<=n;i++)
48     {
49         for(int j=1;j<=m;j++)
50         {
51             if(map[i][j]==-1)cout<<'*';
52             else cout<<map[i][j];
53         }
54         cout<<endl;
55     }
56     return 0;
57     
58 }

 

posted @ 2022-09-11 15:18  要不要吃哈密瓜  阅读(23)  评论(0编辑  收藏  举报