<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      藍橋杯[省賽][B組]-全球變暖

      2022-04-05 18:22  幻霞  閱讀(67)  評論(0)    收藏  舉報

       

       這題在當時的環境下不能使用c++11標準,因此一些寫法會有編譯錯誤和警告.

      題目的思路還是很明確的,可以先深度搜索得到島上所有點,把它們記錄在map中對應一個值,然后遍歷二維數組

      標記淹沒點,在下一輪遍歷中數組和map去掉對應點,最后看還有哪些島還沒被完全淹沒

      #include<bits/stdc++.h>
      #include<map>
      using namespace std;
      char num[1005][1005]= {0};
      int n;
      map<pair<int,int>,int> value;
      int island=0;
      int f[1000]= {0};
      int dx[4]= {1,-1,0,0};
      int dy[4]= {0,0,1,-1};
      // 判斷邊界 
      bool ijok(int i,int j) {
          return (i>=0 && i<n && j>=0 && j<n);
      }
      // 深度搜索得到整個島嶼包含的點
      void dfs(int i,int j,int k) {
          if(ijok(i,j)) {
              if(num[i][j]=='#') {
                  if(value.find(make_pair(i,j))!=value.end()) {
                      return;
                  } else {
                      value[make_pair(i,j)]=k;
                  }
              } else {
                  return;
              }
          } else {
              return;
          }
          dfs(i+1,j,k);
          dfs(i-1,j,k);
          dfs(i,j+1,k);
          dfs(i,j-1,k);
      }
      int main() {
          ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
          cin>>n;
          for(int i=0; i<n; i++) {
              for(int j=0; j<n; j++) {
                  cin>>num[i][j];
              }
          }
      // 計算相連的島嶼
          for(int i=0; i<n; i++) {
              for(int j=0; j<n; j++) {
                  if(num[i][j]=='#' && value.find(make_pair(i,j))==value.end()) {
                      dfs(i,j,++island);
                  }
              }
          }
      //    標記要被淹沒的地區
          for(int i=0; i<n; i++) {
              for(int j=0; j<n; j++) {
                  if(num[i][j]=='#') {
                      for(int m=0; m<4; m++) {
      //                    這一階段不能把陸地換成海洋,不然會導致全部變成海洋
                          if(ijok(i+dx[m],j+dy[m]) && num[i+dx[m]][j+dy[m]]=='.') {
                              num[i][j]='a';
                              break;
                          }
                      }
                  }
              }
          }
      //    淹沒計算并在表中移除對應地塊
          for(int i=0; i<n; i++) {
              for(int j=0; j<n; j++) {
                  if(num[i][j]=='a') {
                      num[i][j]='.';
                      value.erase(make_pair(i,j));
                  }
              }
          }
      //    標記還存在的陸地
          for(map<pair<int,int>,int>::iterator it=value.begin(); it!=value.end(); it++) {
              f[it->second]=1;
          }
          int left=0;//計算剩下的陸地數量
          for(int i=1; i<=island; i++) {
              left+=f[i];
          }
          cout<<island-left;
          return 0;
      }

       

      主站蜘蛛池模板: 国产亚洲国产精品二区| 国产激情国产精品久久源| 国语做受对白XXXXX在线| 日本丰满人妻xxxxxhd| 国产成人精品一区二区秒拍1o| 在线a亚洲v天堂网2018| 华亭县| 深夜av在线免费观看| 国产成人高清精品亚洲| 特级欧美AAAAAAA免费观看| 尤物蜜芽国产成人精品区| 被灌满精子的少妇视频| 麻豆tv入口在线看| 罗源县| 在线日韩日本国产亚洲| 欧美亚洲一区二区三区在线| 国产日韩另类综合11页| 欧美日韩v| 中文字幕一区二区三区四区五区| 国模肉肉视频一区二区三区| 欧美性群另类交| 最新国产精品中文字幕| 人人妻人人澡人人爽曰本| 国产精品免费AⅤ片在线观看| 精品91在线| 英吉沙县| 国产午夜福利视频合集| 亚洲AV无码一二区三区在线播放| 亚洲成a人片在线视频| 国产成人精品18| 无码精品一区二区三区在线| 97视频精品全国免费观看| 亚洲男人天堂2018| 大地资源高清播放在线观看| 国产又爽又黄又刺激的视频| 国产乱人伦无无码视频试看| 亚洲天堂一区二区三区四区| 少妇高潮水多太爽了动态图| 国产无人区码一区二区| 国产精品国产三级国av| 亚洲AV永久无码嘿嘿嘿嘿|