当前位置 : 主页 > 大数据 > 区块链 >

Leetcode-827 Making A Large Island(最大人工岛)

来源:互联网 收集:自由互联 发布时间:2021-06-22
1 int x[] = { 1 ,- 1 , 0 , 0 }; 2 int y[] = { 0 , 0 , 1 ,- 1 }; 3 4 class Solution 5 { 6 private : 7 int acreList[ 1500 ]; 8 int acreListEnd; 9 int Maxresult; 10 int rowSize; 11 int colSize; 12 public : 13 int largestIsland(vectorvector int
  1 int x[] = {1,-1,0,0};
  2 int y[] = {0,0,1,-1};
  3 
  4 class Solution
  5 {
  6     private:
  7         int acreList[1500];
  8         int acreListEnd;
  9         int Maxresult;
 10         int rowSize;
 11         int colSize;
 12     public:
 13         int largestIsland(vector<vector<int>>& grid)
 14         {
 15             acreListEnd = 2;
 16             acreList[0] = 0;
 17             Maxresult = 1;
 18             rowSize = grid.size();
 19             colSize = grid[0].size();
 20             for(int i = 0;i < grid.size();i ++)
 21             {
 22                 for(int j = 0;j < grid[0].size();j ++)
 23                 {
 24                     int tmpAcre = 0;
 25                     if(grid[i][j] == 1)
 26                     {
 27                         preDfs(i,j,grid,tmpAcre);
 28                         acreList[acreListEnd ++] = tmpAcre;
 29                     }
 30                 }
 31             }
 32             
 33             /*
 34             for(int i = 0;i < rowSize;i ++)
 35             {
 36                 for(int j = 0;j < colSize;j ++)
 37                 {
 38                     cout << grid[i][j] << " " ;
 39                 }
 40                 cout << endl;
 41             }
 42             */
 43         //    cout << acreList[3] << endl;
 44         //    memset(0,visit,sizeof(visit));
 45             int flag = 0;
 46             for(int i = 0;i < grid.size();i ++)
 47             {
 48                 for(int j = 0;j < grid[0].size();j ++)
 49                 {
 50                     if(grid[i][j] == 0)
 51                     {
 52                         Dfs(i,j,grid);
 53                         flag = 1;
 54                     }
 55                 }
 56             }
 57             if(!flag)
 58                 Maxresult = rowSize*colSize;
 59             return Maxresult;
 60         }
 61         bool limit(int a,int b)
 62         {
 63             return (a>=0 && a<rowSize && b>=0 && b<colSize);
 64         }
 65         void preDfs(int curX,int curY,vector<vector<int>>& grid,int &acre)
 66         {
 67             acre ++;
 68             grid[curX][curY] = acreListEnd;
 69             for(int i = 0;i < 4;i ++)
 70             {
 71                 if(limit(curX+x[i],curY+y[i]) && grid[curX+x[i]][curY+y[i]] == 1)
 72                 {
 73                     preDfs(curX+x[i],curY+y[i],grid,acre);
 74                 }
 75             }
 76         }
 77         void Dfs(int curX,int curY,vector<vector<int>> grid)
 78         {
 79             int result[4] = {0};
 80             for(int i = 0;i < 4;i ++)
 81             {
 82                 int flag = 1;
 83                 if(limit(curX+x[i],curY+y[i]))
 84                 {
 85                     for(int j = 0;j < i;j ++)
 86                     {
 87                         if(result[j]==grid[curX+x[i]][curY+y[i]])
 88                         {
 89                             flag = 0;
 90                             break;
 91                         }
 92                     }
 93                     if(flag)
 94                         result[i] = grid[curX+x[i]][curY+y[i]];
 95                     else
 96                         result[i] = 0;
 97                 }
 98                 else
 99                     result[i] = 0;
100             }
101             for(int i = 0;i < 4;i ++)
102                 result[i] = acreList[result[i]];
103             sort(result,result+4);
104             if(result[0]+result[1]+result[3]+result[2]+1>Maxresult)
105             {
106                 Maxresult = result[0]+result[1]+result[3]+result[2]+1;
107             }
108             cout << result[2] << " " << result[3] << endl;
109         }
110 };
上一篇:理解REST和RPC
下一篇:695. Max Area of Island
网友评论