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

day51 图论part3

文章目录

  • 卡码网 101. 孤岛的总面积
  • 卡码网 102. 沉没孤岛
  • 卡码网 103. 高山流水
  • 卡码网 104. 建造最大岛屿

卡码网 101. 孤岛的总面积

可以从行和列的遍历开始,从边缘向中间遍历 。

importjava.util.*;classMain{staticintres=0;staticintcount=0;staticbooleanflag=false;publicstaticvoiddfs(int[][]graph,boolean[][]visited,intx,inty){if(visited[x][y]||graph[x][y]==0){return;}if(x==0||y==0||x==graph.length-1||y==graph[0].length-1){flag=true;}count++;visited[x][y]=true;int[][]dir={{1,0},{0,1},{-1,0},{0,-1}};for(inti=0;i<4;i++){intnextx=x+dir[i][0];intnexty=y+dir[i][1];if(nextx<0||nexty<0||nextx>=graph.length||nexty>=graph[0].length){continue;}dfs(graph,visited,nextx,nexty);}}publicstaticvoidmain(String[]agrs){Scannersc=newScanner(System.in);intn=sc.nextInt();intm=sc.nextInt();int[][]graph=newint[n][m];for(inti=0;i<n;i++){for(intj=0;j<m;j++){graph[i][j]=sc.nextInt();}}boolean[][]visited=newboolean[n][m];for(inti=0;i<n;i++){for(intj=0;j<m;j++){if(!visited[i][j]&&graph[i][j]==1){dfs(graph,visited,i,j);}if(flag==false){res+=count;}count=0;flag=false;}}System.out.println(res);}}

卡码网 102. 沉没孤岛

importjava.util.*;publicclassMain{publicstaticvoiddfs(int[][]graph,intx,inty){if(graph[x][y]==0||graph[x][y]==2){return;}graph[x][y]=2;int[][]dir={{1,0},{0,1},{-1,0},{0,-1}};for(inti=0;i<4;i++){intnextx=x+dir[i][0];intnexty=y+dir[i][1];if(nextx<0||nexty<0||nextx>=graph.length||nexty>=graph[0].length){continue;}dfs(graph,nextx,nexty);}}publicstaticvoidmain(String[]agrs){Scannersc=newScanner(System.in);intn=sc.nextInt();intm=sc.nextInt();int[][]graph=newint[n][m];for(inti=0;i<n;i++){for(intj=0;j<m;j++){graph[i][j]=sc.nextInt();}}for(inti=0;i<n;i++){if(graph[i][0]==1){dfs(graph,i,0);}if(graph[i][m-1]==1){dfs(graph,i,m-1);}}for(intj=0;j<m;j++){if(graph[0][j]==1){dfs(graph,0,j);}if(graph[n-1][j]==1){dfs(graph,n-1,j);}}for(inti=0;i<n;i++){for(intj=0;j<m;j++){if(graph[i][j]==2){graph[i][j]=1;}elseif(graph[i][j]==1){graph[i][j]=0;}}}for(inti=0;i<n;i++){for(intj=0;j<m;j++){System.out.print(graph[i][j]+" ");}System.out.println();}}}

卡码网 103. 高山流水

从边界开始遍历,逆向思维。

importjava.util.*;publicclassMain{publicstaticvoiddfs(int[][]graph,boolean[][]visited,intx,inty){if(visited[x][y]){return;}visited[x][y]=true;int[][]dir={{1,0},{0,1},{-1,0},{0,-1}};for(inti=0;i<4;i++){intnextx=x+dir[i][0];intnexty=y+dir[i][1];if(nextx<0||nexty<0||nextx>=graph.length||nexty>=graph[0].length){continue;}if(graph[x][y]<=graph[nextx][nexty]){dfs(graph,visited,nextx,nexty);}}}publicstaticvoidmain(String[]agrs){Scannersc=newScanner(System.in);intn=sc.nextInt();intm=sc.nextInt();int[][]graph=newint[n][m];for(inti=0;i<n;i++){for(intj=0;j<m;j++){graph[i][j]=sc.nextInt();}}boolean[][]firstborder=newboolean[n][m];boolean[][]secondborder=newboolean[n][m];for(inti=0;i<n;i++){dfs(graph,firstborder,i,0);dfs(graph,secondborder,i,m-1);}for(intj=0;j<m;j++){dfs(graph,firstborder,0,j);dfs(graph,secondborder,n-1,j);}for(inti=0;i<n;i++){for(intj=0;j<m;j++){if(firstborder[i][j]==true&&secondborder[i][j]==true){System.out.print(i+" "+j);System.out.println();}}}}}

卡码网 104. 建造最大岛屿

先计算出所有岛屿的面积,用map存储,之后再把0的位置设置为1看周围面积变化。

importjava.util.*;publicclassMain{staticintmark=2;staticintcount=0;staticint[][]dir={{1,0},{0,1},{-1,0},{0,-1}};publicstaticvoiddfs(int[][]graph,boolean[][]visited,intx,inty,intmark){if(visited[x][y]){return;}visited[x][y]=true;graph[x][y]=mark;count++;for(inti=0;i<4;i++){intnextx=x+dir[i][0];intnexty=y+dir[i][1];if(nextx<0||nexty<0||nextx>=graph.length||nexty>=graph[0].length){continue;}if(graph[nextx][nexty]==1){dfs(graph,visited,nextx,nexty,mark);}}}publicstaticvoidmain(String[]agrs){Scannersc=newScanner(System.in);intn=sc.nextInt();intm=sc.nextInt();int[][]graph=newint[n][m];HashMap<Integer,Integer>mapsize=newHashMap<>();HashSet<Integer>setsize=newHashSet<>();for(inti=0;i<n;i++){for(intj=0;j<m;j++){graph[i][j]=sc.nextInt();}}intmaxIsland=0;boolean[][]visited=newboolean[n][m];for(inti=0;i<n;i++){for(intj=0;j<m;j++){if(!visited[i][j]&&graph[i][j]==1){count=0;dfs(graph,visited,i,j,mark);mapsize.put(mark,count);mark++;}maxIsland=Math.max(maxIsland,count);}}intres=maxIsland;for(inti=0;i<n;i++){for(intj=0;j<m;j++){intsize=1;if(graph[i][j]==0){setsize.clear();for(intk=0;k<4;k++){intneari=i+dir[k][0];intnearj=j+dir[k][1];if(neari<0||nearj<0||neari>=graph.length||nearj>=graph[0].length){continue;}Integercur_key=graph[neari][nearj];if(mapsize.containsKey(cur_key)&&!setsize.contains(cur_key)){size+=mapsize.get(cur_key);setsize.add(cur_key);}}res=Math.max(res,size);}}}System.out.println(res);}}
http://www.jsqmd.com/news/481441/

相关文章:

  • 学习周报三十六
  • 2026年3月国内实验室污水处理设备口碑佳的产品推荐,二氧化氯发生器/次氯酸钠发生器,实验室污水处理设备产品怎么选择 - 品牌推荐师
  • 说说南京扬旺中空板周转箱靠谱吗,在上海、广州等地口碑如何 - myqiye
  • 哈尔滨公务员面试强化培训怎么选,友恒公考值得考虑吗? - 工业推荐榜
  • 在OpenClaw争议中,除了技术层面的抓取,是否存在文化层面上拿来主义与贡献者文化的深层冲突?
  • 通信工程毕业论文(毕设)2024开题思路
  • 学长亲荐!千笔AI,碾压级的一键生成论文工具
  • 2026年公务员面试强化培训选哪家,友恒公考本土优势突出 - 工业设备
  • 深圳龙岗区发布龙虾十条政策扶持,政府力量介入一个开源软件项目是否会扭曲市场竞争造成新的寻租空间?
  • 从Linux到OpenClaw,开源项目的走红逻辑发生了什么变化?为什么现在的爆火总是伴随着巨大的争议和焦虑营销?
  • 2026年全国耐磨聚乙烯板推荐厂家排名,哪家性价比高值得选? - 工业品牌热点
  • wps word2026年开始有ai检查错误的功能了,还可以一键检查-一键修正的功能,大家觉得如何
  • 数字化产品战略核心:2026年主流产品管理软件竞争格局与工具全景解析 - 十大品牌推荐
  • 2026安庆婚纱照首选推荐|玛萨龙摄影,官方咨询+线下到店全维度指南 - 江湖评测
  • 2026年热门关节机器人厂家,哪家性价比靠谱 - 工业品网
  • 【局域网风暴】当周围的节点都在诱惑你“重启旧程序”
  • 【第二周】关键词解释:RAG (Retrieval-Augmented Generation,检索增强生成)
  • 地平线 Sparse 多任务参考算法 SparseBevFusionMultitaskOE-V1.0
  • 2026年天津好用的诚信离婚律师团队,专业保障权益无忧 - mypinpai
  • ?64
  • 讲讲大型中空板周转箱,南京扬旺费用怎么算,推荐哪家好? - mypinpai
  • 周转箱生产厂哪家性价比高,盘点靠谱的品牌 - myqiye
  • 分析长沙株洲比较不错的验光配镜专业店,哪家性价比高? - 工业设备
  • 2026上海杭州等地关节机器人正规供应商选购,哪家性价比高 - 工业品网
  • 聊聊嘉兴实轴优质服务厂家,哪家口碑比较好 - mypinpai
  • 想了解豆包AI特点,武汉晟飞科技带你一探究竟 - 工业品牌热点
  • 探讨天津离婚律师选哪家好,靠谱之选别错过 - myqiye
  • 2026年阳光房生产厂口碑排名,奥康斯排第几? - 工业推荐榜
  • 总结北京温室大棚正规供应商推荐,费用多少钱能拿下 - 工业设备
  • 2026年豆包AI哪家好用,武汉晟飞科技口碑出众 - 工业品牌热点