洛谷2670扫雷游戏
是题单里唯一一个入门题,
对于此题,*输出本身,不是雷就要输出周围8个方向的雷的个数,
最需要注意的就是二维数组使用时的边界情况,
这是第一次用C++解题,希望以后能熟练掌握吧
#include<iostream>
#include<stdio.h>
using namespace std;
int a,b;
char map[100][100];
int fun(int i,int j);
int main()
{
cin>>a;
cin>>b;
getchar();//吸收换行
for(int i=1;i<=a;i++)
{
for(int j=1;j<=b;j++)
{
char c=getchar();
map[i][j]=c;
}
getchar();//吸收换行
}
for(int i=1;i<=a;i++)
{
for(int j=1;j<=b;j++)
{
if(map[i][j]=='*')
cout<<'*';
else
cout<<fun(i,j);
}
cout<<endl;
}
return 0;
}
int fun(int i,int j){
int count=0;
if(i-1>=1){
if(j-1>=1){
if(map[i-1][j-1]=='*')
count++;
}
if(map[i-1][j]=='*')
count++;
if(j+1<=b){
if(map[i-1][j+1]=='*')
count++;
}
}
if(j-1>=1){
if(map[i][j-1]=='*')
count++;
}
if(j+1<=b)
if(map[i][j+1]=='*')
count++;
if(i+1<=a){
if(j-1>=1){
if(map[i+1][j-1]=='*')
count++;
}
if(map[i+1][j]=='*')
count++;
if(j+1<=b){
if(map[i+1][j+1]=='*')
count++;
}
}
return count;
}