10189 - Minesweeper

本文介绍了一个具体的编程问题及其解决方案,包括使用循环进行累加的方法、输入输出格式注意事项及代码实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

Time limit: 3.000 seconds

pdf题目

解题思路

1.这里不涉及什么技巧,用循环不断加即可,注意越界

2.需要注意的是输入和输出格式。输入的时候最好用scanf,它以空白字符作为结束符;输出的时候注意空格:答案之间有空格,但是最后一个答案之后不能有空格,否则会错。提交的两次错误都在输出格式上

3.时间复杂度Θ(n*m),空间复杂度Θ(n*m)

通过代码

#include<stdio.h>

char field[105][105];

int main(){
	int n,m;
	int i,j;
	int x=0;

#ifdef DEBUG
	freopen("input.txt","r",stdin);
	freopen("out.txt","w",stdout);
#endif

	while(true)
	{
		scanf("%d%d",&n,&m);
		if(n*m==0)
			break;
	
		for(i=0;i<n;++i)
		{
			scanf("%s",field[i]);
			for(j=0;j<m;++j)
				if(field[i][j]=='.')
					field[i][j]='0';
		}


		for(i=0;i<n;++i)
			for(j=0;j<m;++j)
				if(field[i][j]=='*')
				{
					int r1=i-1>=0?i-1:0;
					int r2=i+1<n?i+1:n-1;
					int c1=j-1>=0?j-1:0;
					int c2=j+1<m?j+1:m-1;

					for(int a=r1;a<=r2;++a)
						for(int b=c1;b<=c2;++b)
							if(field[a][b]!='*')
								field[a][b]++;

				}
		if(x!=0)
			printf("\n");
		printf("Field #%d:\n",++x);
		for(i=0;i<n;++i)
		{
			for(j=0;j<m;++j)
				printf("%c",field[i][j]);
			printf("\n");
		}

	}

	return 0;
}
 
 
 
运行截图



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值