栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

出现了Segmentation Fault的代码,还未解决,是为什么呢?那位小伙伴知道欢迎留言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

出现了Segmentation Fault的代码,还未解决,是为什么呢?那位小伙伴知道欢迎留言

扫雷游戏是一款十分经典的单机小游戏。它的精髓在于,通过已翻开格子所提示的周围格地雷数,来判断未翻开格子里是否是地雷。

现在给出 nn 行 mm 列的雷区中的地雷分布,要求计算出每个非地雷格的周围格地雷数。

注:每个格子周围格有八个:上、下、左、右、左上、右上、左下、右下。

输入格式

第一行包含两个整数 nn 和 mm,分别表示雷区的行数和列数。1 le n le 100, 1 le m le 1001≤n≤100,1≤m≤100。

接下来 nn 行,每行 mm 个字符,'*'表示相应格子中是地雷,'?'表示相应格子中无地雷。字符之间无任何分隔符。

输出格式

nn 行,每行 mm 个字符,描述整个雷区。若相应格中是地雷,则用'*'表示,否则用相应的周围格地雷数表示。字符之间无任何分隔符。

Sample Input

3 3
*??
???
?*?

Sample Output

*10
221
1*1

新手,写的不好,请见谅

代码如下

#include
using namespace std;
int main (){
	int x,y;cin>>x>>y;
char **a=new (std::nothrow)char*[x+2];
for(int i=0;i>a[i][j];
//		cout<

地雷正解

#include
using namespace std;
char a[110][110];
int number[110][110];
int dx[]={-1,0,1,-1,0,1,-1,1};
int dy[]={-1,1,0,0,-1,1,1,-1};
void  deal(int x,int y){
	for(int i=0;i<8;i++){
		int xx=x+dx[i];
		int yy=y+dy[i];
		 number [xx][yy]++;
	}
}
int main (){
   int n,m;cin>>n>>m;
   for(int i=1;i<=n;i++){
   	cin>>a[i]+1;
   }
   for(int i=1;i<=n;i++){
   	for(int j=1;j<=m;j++){
   		if(a[i][j]=='*')deal(i,j); 
		}
   }
   for(int i=1;i<=n;i++){
   	for(int j=1;j<=m;j++){
   		if(a[i][j]=='*')cout<<"*";
   		else cout<< number [i][j];
	   }
	   cout<<'n'; 
   }
	return 0;
}



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703332.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号