P2670 【扫雷游戏】
2019-08-16 07:44:17来源:博客园 阅读 ()
P2670 【扫雷游戏】
题面哦~~
lalala~~~
这题数据并不大,最大不过100*100,所以果断穷举
其实本来我是想边读边做的,但读入是个问题。
主要思路呢,就是读完之后穷举一边,只要是炸弹,就把周围一圈8个加一遍
AC代码:
1 #include<set> 2 #include<map> 3 #include<list> 4 #include<queue> 5 #include<stack> 6 #include<string> 7 #include<cmath> 8 #include<ctime> 9 #include<vector> 10 #include<bitset> 11 #include<memory> 12 #include<utility> 13 #include<cstdio> 14 #include<sstream> 15 #include<iostream> 16 #include<cstdlib> 17 #include<cstring> 18 #include<algorithm>//忒多的头文件 19 using namespace std; 20 int n,m; 21 int mm[105][105]; 22 char a[105][105]; 23 int main(){ 24 cin>>n>>m; 25 for(int i=1;i<=n;i++){ 26 scanf("%s",&a[i]);//我之前想的读入好复杂,,结果。。。 27 } 28 for(int i=1;i<=n;i++){//穷举 29 for(int j=0;j<m;j++){ 30 if(a[i][j]=='*'){//是炸弹的情况 31 mm[i][j]=-100000000;//其实一个点最多就加8下 32 mm[i-1][j-1]++;//不停加,8个 33 mm[i-1][j]++; 34 mm[i-1][j+1]++; 35 mm[i][j-1]++; 36 mm[i][j+1]++; 37 mm[i+1][j-1]++; 38 mm[i+1][j]++; 39 mm[i+1][j+1]++; 40 } 41 } 42 } 43 for(int i=1;i<=n;i++){ 44 for(int j=0;j<m;j++){ 45 if(mm[i][j]<0){//是地雷就输出* 46 cout<<"*"; 47 } 48 else{ 49 cout<<mm[i][j];//不是就输出周围个数 50 } 51 } 52 cout<<endl; 53 } 54 return 0; 55 }
其实最后输出的时候可以用一句概括为一个三目表达式:cout<<(mm[i][j]<0?'*':m[i][j]),理解起来应该不困难
最后,祝大家AV!!!AK!!!
原文链接:https://www.cnblogs.com/hahaha2124652975/p/11123084.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:求二叉树的高度(非递归)
下一篇:strlen 函数
- C语言实现经典游戏——扫雷! 2020-04-17
- 小游戏二之---------------五子棋 2020-03-23
- Qt5小Demo之猜数字游戏 2020-03-19
- [Uva1637][DFS][记忆化] 纸牌游戏 Double Patience 2020-03-06
- 游戏终端服务器分享(1.2版) 2020-02-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash