10189 - Minesweeper

来源:互联网 发布:谷歌翻译mac版免费 编辑:程序博客网 时间:2024/04/25 08:07

题目

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 DEBUGfreopen("input.txt","r",stdin);freopen("out.txt","w",stdout);#endifwhile(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;}

运行截图




0 0