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

代码随想录 打卡第五十二天

卡码网 101 孤岛的总面积

#include<iostream> #include<vector> using namespace std; int inorder[4][2] = {0,1, 1,0, 0,-1, -1,0}; void dfs(vector<vector<int>>& mon,int x,int y){ if(mon[x][y] == 0) return; mon[x][y] = 0; for(int i = 0;i < 4;i++){ int next_x = x + inorder[i][0]; int next_y = y + inorder[i][1]; if(next_x < mon.size() && next_x >= 0 && next_y < mon[0].size() && next_y >= 0){ if(mon[next_x][next_y] == 1){ dfs(mon,next_x,next_y); } } } return; } int main(){ int n,m; cin >> n >> m; vector<vector<int>> mon(n,vector<int>(m,0)); for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ cin >> mon[i][j]; } } for(int i = 0;i < n;i++){ dfs(mon,i,0); dfs(mon,i,m-1); } for(int j = 0;j < m;j++){ dfs(mon,0,j); dfs(mon,n-1,j); } int count = 0; for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ if(mon[i][j] == 1) count++; } } cout << count; return 0; }

卡码网 102 沉没孤岛

#include<iostream> #include<vector> using namespace std; int main(){ int n,m; cin >> n >> m; vector<vector<int>> graph(n,vector<int>(m,0)); vector<vector<int>> state(n,vector<int>(m,0)); for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ cin >> graph[i][j]; } } for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ if((i == 0 || j == 0 || i == n-1 || j == m-1) && graph[i][j] == 1) state[i][j] = 1; } } for(int i = 0;i < n;i++){ cout << state[i][0]; for(int j = 1;j < m;j++){ cout << " " << state[i][j]; } cout << endl; } return 0; }

卡码网 103 高山流水

#include<iostream> #include<vector> using namespace std; int inorder[4][2] = {0,1, 1,0, 0,-1, -1,0}; void dfs(vector<vector<int>>& mon,vector<vector<int>>& visit,int x,int y){ if(visit[x][y] == 1) return; visit[x][y] = 1; for(int i = 0;i < 4;i++){ int next_x = x + inorder[i][0]; int next_y = y + inorder[i][1]; if(next_x < mon.size() && next_x >= 0 && next_y < mon[0].size() && next_y >= 0){ if(mon[next_x][next_y] >= mon[x][y]){ dfs(mon,visit,next_x,next_y); } } } return; } int main(){ int n,m; cin >> n >> m; vector<vector<int>> mon(n,vector<int>(m,0)); vector<vector<int>> border1(n,vector<int>(m,0)); vector<vector<int>> border2(n,vector<int>(m,0)); for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ cin >> mon[i][j]; } } for(int i = 0;i < n;i++){ dfs(mon,border1,i,0); dfs(mon,border2,i,m-1); } for(int j = 0;j < m;j++){ dfs(mon,border1,0,j); dfs(mon,border2,n-1,j); } for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ if(border1[i][j] == 1 && border2[i][j] == 1) { cout << i << " " << j << endl; } } } return 0; }

卡码网 104 建造最大岛屿

#include<iostream> #include<vector> #include<unordered_map> #include<unordered_set> using namespace std; int inorder[4][2] = {0,1, 1,0, 0,-1, -1,0}; void dfs(vector<vector<int>>& graph,vector<vector<int>>& visit,int x,int y,int& space,int& mark){ if(graph[x][y] == 0) return; if(visit[x][y] == 1) return; visit[x][y] = 1; graph[x][y] = mark; space++; for(int i = 0;i < 4;i++){ int next_x = x + inorder[i][0]; int next_y = y + inorder[i][1]; if(next_x < graph.size() && next_x >= 0 && next_y < graph[0].size() && next_y >= 0){ dfs(graph,visit,next_x,next_y,space,mark); } } return; } int main(){ int n,m; cin >> n >> m; vector<vector<int>> graph(n,vector<int>(m,0)); vector<vector<int>> visit(n,vector<int>(m,0)); unordered_map<int,int> sp; for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ cin >> graph[i][j]; } } int mark = 1; for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ if(graph[i][j] == 1 && visit[i][j] == 0){ int space = 0; dfs(graph,visit,i,j,space,mark); sp[mark] = space; mark++; } } } int result = 0; int water = 0; unordered_set<int> visitset; for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ if(graph[i][j] != 0) water = 1; int state = 1; if(graph[i][j] == 0) { for(int k = 0;k < 4;k++){ int next_x = i + inorder[k][0]; int next_y = j + inorder[k][1]; if(next_x < graph.size() && next_x >= 0 && next_y < graph[0].size() && next_y >= 0){ if(graph[next_x][next_y] != 0 && visitset.find(graph[next_x][next_y]) == visitset.end()){ state += sp[graph[next_x][next_y]]; visitset.insert(graph[next_x][next_y]); } } } } visitset.clear(); if(result < state) result = state; } } if(result == 1 && water == 1) result = n * m; cout << result; return 0; }
http://www.jsqmd.com/news/984677/

相关文章:

  • 别再手动对齐代码了!手把手教你配置VSCode的Verilog-Format插件(附配置文件下载)
  • 为什么dubbo和openFeign都是通过动态代理的方式发起调用
  • 别再只用v-if了!用Vue3自定义指令封装一个权限按钮组件(附完整代码)
  • 平基土石方三维计算软件功能更新至V0.3.2
  • 别再踩坑了!Win10下Qt 5.12.6完整安装与组件选择避坑指南(附清华镜像加速)
  • 避坑指南:Windbg双机调试时,你的网卡真的支持吗?(附Win10支持列表查询)
  • 质量好的家谱软件品牌哪家专业:2026年行业现状与主体分析 - 优质品牌商家
  • 意图共鸣科技《AI记忆链商业化白皮书3.0》技术解读:“AI焦虑的解药”——从通用AI到个人记忆链架构
  • 网络安全第120天
  • CANoe仿真节点间变量不共享?一次搞懂CAPL全局变量的‘副本’机制
  • 2026年靠谱的哈尔滨新房装修/哈尔滨半包装修/哈尔滨定制装修/哈尔滨二手房装修优选服务公司 - 行业平台推荐
  • dubbo和openfeign 远程过程调用有什么区别
  • Elastic Agent独立模式实战:手把手教你从Kibana配置到Nginx日志采集(macOS版)
  • IDEA里文件缓存冲突弹窗别乱点!手把手教你Maven创建项目时正确处理File Cache Conflict
  • 2026年评价高的哈尔滨环保装修/哈尔滨半包装修/哈尔滨新房装修/哈尔滨全包装修行业标杆公司 - 品牌宣传支持者
  • Windows 10上5分钟搞定EMQX MQTT服务器,叉车本地测试不求人
  • CAPL仿真节点隔离揭秘:为什么你的全局变量在另一个.can文件里‘失效’了?
  • 2026年宁波可靠婚姻律师律所排行权威盘点 - 优质品牌商家
  • 别慌!IntelliJ IDEA弹出‘File Cache Conflict’?这其实是你的‘版本时光机’
  • IDEA老用户转投Save Actions插件后,我的代码整洁度提升了200%
  • 汇编语言入门-第一章基础知识
  • MATLAB多缝干涉光强模拟工具:自由调节缝数、缝宽、波长与屏距
  • 2026年嵩明不错的半山温泉推荐:家庭出游优选地 - 2026年企业资讯
  • Perseus实战深度揭秘:三步搞定《碧蓝航线》全皮肤解锁
  • 质量好的聚氨酯封边岩棉复板品牌推荐:基于技术、产能与区域服务的行业分析 - 优质品牌商家
  • 2026年京东云OpenClaw/Hermes Agent配置Token Plan部署流程来了
  • 2026年诚信拆除室内装修公司服务能力分析——以成都及周边市场为例 - 优质品牌商家
  • Magpie窗口放大工具:5分钟快速上手,让老旧软件在高分屏上焕然一新
  • 工控人必看!登录到Factory talk 网络秒解[特殊字符]再也不用被罗克韦尔软件卡脖子了
  • HS2-HF_Patch:5分钟掌握Honey Select 2终极汉化去码补丁完全指南