NOIP 2015 普及组 复赛 mine 扫雷游戏
来源:互联网 发布:妙笔生花绘画软件 编辑:程序博客网 时间:2024/06/05 10:28
NOIP 2015 普及组 复赛 mine 扫雷游戏
1.周围格子,用米字形理解比较方便。
2.弄明白提议后,发现是某点八个方向的遍历,写代码时要注意边界的处理。
3.研究矩阵是,若用x,y极易出错,建议改成r(row),c(col)这样便于查错,也便于理解
附上AC代码,编译环境Dev-C++4.9.9.2
#include <stdio.h>
char s[100+5][100+5];
int b[100+5][100+5];
int step[8][2]={{0,-1},{0,1},{-1,0},{1,0},{-1,-1},{1,-1},{-1,1},{1,1}};
int n,m;
int fun(int r,int c){
int count=0;
int i,j;
int newr,newc;
for(i=0;i<8;i++){
newr=r+step[i][0];
newc=c+step[i][1];
if(newr>=0&&newr<n&&newc>=0&&newc<m)//此处容易写错 newx>=0&&newx<m&&newy>=0&&newy<n调了一会
if(s[newr][newc]=='*')
count++;
}
return count;
}
int main(){
int i,j;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%s",s[i]);
for(i=0;i<n;i++)
for(j=0;j<m;j++){
if(s[i][j]=='*')
b[i][j]=-1;//地雷位置设为-1
else
b[i][j]=fun(i,j);
}
for(i=0;i<n;i++){
for(j=0;j<m;j++)
if(b[i][j]==-1)
printf("*");
else
printf("%d",b[i][j]);
printf("\n");
}
return 0;
}
- NOIP 2015 普及组 复赛 mine 扫雷游戏
- NOIP2015-普及组复赛-第2题-扫雷游戏
- NOIP 2015 普及组 复赛 coin 金币
- NOIP 2008 普及组 复赛 ball 传球游戏
- NOIP 2010 普及组 复赛 sanguo 三国游戏
- NOIP-2016-普及组 复赛题解
- [NHZXOI2017]2016NOIP普及组复赛题解
- NOIP 2004 普及组 复赛 FBI树
- NOIP 2002 普及组 复赛 级数求和
- NOIP 1998 普及组 复赛 三连击
- NOIP 1997 普及组 复赛 棋盘问题
- NOIP 2002 普及组 复赛 选数
- NOIP 1999 普及组 复赛 Cantor表
- NOIP 2003 普及组 复赛 table 乒乓球
- NOIP 2005 普及组 复赛 medic 采药
- NOIP 2001 普及组 复赛 装箱问题
- NOIP 1998 普及组 复赛 幂次方
- NOIP 2001 普及组 复赛 求先序排列
- iOS 通过定位获取常驻后台
- UNICODE与ASCII的区别 (ajax中的escape)
- C# 静态成员和静态类
- java.lang.NoSuchFieldError错误
- php写文本
- NOIP 2015 普及组 复赛 mine 扫雷游戏
- 解决Toolbar的Icon、logo、title间距问题
- Spring Web
- Spring事务管理(详解+实例)
- 计算行列式(高斯消元?+Java+工具)
- 工具——excel上传到数据库
- vim可以很方便地编辑二进制文件
- DOS中的set命令
- c++常见笔试题(1)