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

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

出现了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;
}



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5703437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存