Minesweeper(蓝桥杯)
时间:2022-07-24
本文章向大家介绍Minesweeper(蓝桥杯),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题意:就是扫雷,八个方向,然后*代表雷,.代表无雷,让你输出周围多少雷。
暴力做法:就扫呗,反正你是控制范围输出的,嗯嗯,对,就是这样!
#include<bits/stdc++.h>
#define maxn 101
using namespace std;
int n,m;
int b[maxn][maxn];
int k = 1;
int main(){
while(cin>>n>>m&&n&&m){
char a[n+1][m+1];
memset(a,'.',sizeof(a));
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='*'){
b[i][j+1]++;
b[i][j-1]++;
b[i-1][j]++;
b[i+1][j]++;
b[i+1][j+1]++;
b[i+1][j-1]++;
b[i-1][j-1]++;
b[i-1][j+1]++;
}
}
}
cout<<"Field #"<<k<<":"<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='*')
cout<<'*';
else{
cout<<b[i][j];
}
}
cout<<endl;
}
k++;
cout<<endl;
}
return 0;
}
然后就想着更好的方法嘛,就是给雷区标记,然后每个区的贡献值都是周围八个区的贡献值叠加。边输入边更新就能得到答案!
#include <bits/stdc++.h>
using namespace std;
int main(){
int map[110][110];
int n,m,i,j,k,t=0;
char z;
int df[8][2]={{1,-1},{1,0},{1,1},{0,-1},{0,1},{-1,1},{-1,-1},{-1,0}}; //8个方向
while(cin>>n>>m&&n&&m){
if(t)cout<<endl;t++;// 每两个答案之间 有一个空行 注意是之间
memset(map,0,sizeof(map));//初始化为 全0
for(i=1;i<=n;i++){//坐标从1 开始 n 结束 可以省掉处理边界
for(j=1;j<=m;j++){
cin>>z;
if(z=='*'){//如果是雷
map[i][j]=10;// 将是雷的地方给个标记 非雷 最多值是8 这里我取10
for(k=0;k<8;k++)map[i+df[k][0]][j+df[k][1]]++;//让周围格子自加1
}
}
}
cout<<"Fiel #"<<t<<":"<<endl;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
if(map[i][j]>=10)cout<<"*";
else cout<<map[i][j];
cout<<endl;
}
}
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- leetcode - 旋转数组的最小数字
- 笔记101 | 文件的压缩与解压笔记
- 诸葛亮vs司马懿,排序算法大战谁能笑到最后?
- Centos密钥登陆,解决云服务器被尝试登陆问题
- Fair Scheduler到Capacity Scheduler 转换工具
- 这可能是把SpringBoot配置文件讲解的最详细的文章了
- 抛出这8个问题,检验一下你到底会不会ThreadLocal,来摸个底~
- 最近合肥降雨不断,给自己做一个天气情况微信定时推送吧
- 【适合收藏】为了多点时间陪女朋友,我向BAT大佬跪求了这15条JS技巧
- iOS文本尺寸自适应异步计算实现
- CentOS7下系统分析与排障利器sysdig简单介绍
- Faker 一个生成虚拟数据的Python模块
- ICLR 2020 Mogrifier LSTM 解析
- 优秀的程序员是如何利用工具来提升工作效率的?
- webpack实战——一切皆模块