当前位置: 首页 > news >正文

STL map容器与pair类模板(解决扫雷问题)

C++STL之Map容器 - 数据结构教程 - C语言网 (dotcpp.com)icon-default.png?t=N7T8https://www.dotcpp.com/course/118C++STL之Pair类模板 - 数据结构教程 - C语言网 (dotcpp.com)icon-default.png?t=N7T8https://www.dotcpp.com/course/119        刷到一个扫雷的题目,之前没有玩怎么过扫雷,于是我就去玩了玩,一玩就凌晨两点,直接上瘾好几天哈哈。

        言归正传,瞅瞅这道编程题,不难,用pair表示坐标,map<pair<int,int>,int>关联容器存储各坐标点状态(key-2维坐标,value-地雷状态0/1),然后迭代器遍历map地雷阵,计算当前坐标点处四周8个位置的地雷数(注意地雷矩阵边缘处的邻近区域的特殊性,可以通过map的find()成员函数的返回值鉴定),输出。

 

#include<iostream>
#include<map>
#include<vector>
using namespace std;void mineSweeper(const map<pair<int,int>,int>& sweeper, vector<int>& sweeper_size){for(auto it=sweeper.begin(); it!=sweeper.end(); it++){// sweeperif(it->second == 1){cout<<"*";}// not sweeper, count sweeper_num aroundelse{int sweeper_sum=0;for(int i=-1; i<=1; i++){for(int j=-1; j<=1; j++){int locs_1 = it->first.first + i;int locs_2 = it->first.second + j;if(sweeper.find(make_pair(locs_1,locs_2)) != sweeper.end()){// cout<<"("<<locs_1<<","<<locs_2<<")";sweeper_sum += sweeper.find(make_pair(locs_1,locs_2))->second;// cout<<"<"<<sweeper_sum<<">";}}}cout<<sweeper_sum;}if(it->first.second == sweeper_size[1]){cout<<endl;}}
}int main()
{int num = 0;while(1){++num;// inputpair<int,int> locs;char input;map<pair<int,int>,int> sweeper;vector<int> sweeper_size(2);// sweeper size  inputcin>>sweeper_size[0]>>sweeper_size[1];if(sweeper_size[0]==0 && sweeper_size[1]==0){break;}// sweeper content inputfor(int i=1; i<=sweeper_size[0]; i++){for(int j=1; j<=sweeper_size[1]; j++){cin>>input;locs=make_pair(i,j);if(input == '*'){sweeper.insert(pair<pair<int,int>,int>(locs,1));}else{sweeper.insert(pair<pair<int,int>,int>(locs,0));}}}// // debug input// for(auto it=sweeper.begin(); it!=sweeper.end(); it++){//     // cout<<it->first.first<<","<<it->first.second<<":"<<it->second<<endl;//     cout<<it->second;//     if(it->first.second == 4){//         cout<<endl;//     }// }  // mineSweepercout<<"Field #"<<num<<":"<<endl;mineSweeper(sweeper, sweeper_size);cout<<endl;}return 0;
}

http://www.lryc.cn/news/274475.html

相关文章:

  • 【React系列】Portals、Fragment
  • ByteTrack算法流程的简单示例
  • 免费的GPT4来了,你还不知道吗?
  • win10报错“zlib.dll文件丢失,软件无法启动”,修复方法,亲测有效
  • MFC中如何使用CListCtrl可以编辑,并添加鼠标右键及双击事件。
  • [每周一更]-(第81期):PS抠图流程(扭扭曲曲的身份证修正)
  • Kafka安全认证机制详解之SASL_PLAIN
  • 2023南京理工大学通信工程818信号系统及数电考试大纲
  • wsl(ubuntu)创建用户
  • [足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-8Lag Compensator滞后补偿器
  • swift-碰到的问题
  • 安全与认证Week4
  • Golang高质量编程与性能调优实战
  • vite 如何打包 dist 文件到 zip 使用插件 vite-plugin-zip-pack,vue3 ts
  • jdbc源码研究
  • 挠性及刚挠结合印制电路技术
  • Python+OpenGL绘制3D模型(七)制作3dsmax导出插件
  • MediaPipeUnityPlugin Win10环境搭建(22年3月的记录,新版本已完全不同,这里只做记录)
  • Nginx - location块中的alias和try_files重定向
  • 二刷Laravel 教程(用户模型)总结Ⅲ
  • 安装PyTorch及环境配置(应用于Python上的YOLO)
  • 【194】PostgreSQL 14.5 编写SQL从身份证号中查找性别,并且更新性别字段。
  • 微服务管家:NestJS 如何使用服务发现 Consul 实现高效的微服务节点管理
  • Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C++)
  • 铁塔基站数字化管理监测解决方案
  • 如何使用Python3 Boto3删除AWS CloudFormation的栈(Stacks)
  • 差分约束算法
  • 彻底解决vue-video-player播放视频有黑边
  • 区域负责人常用的ChatGPT通用提示词模板
  • Java Spring boot 可變參數,以及弊端