void setWater(vector<vector<char>> & grid, int y, int x) { grid[y][x] = '0'; if (x >= 1 && grid[y][x-1] == '1') { setWater(grid, y, x-1); } if (x+1 < grid[y].size() && grid[y][x+1] == '1') { setWater(grid, y, x+1); } if (y >= 1 && grid[y-1][x] == '1') { setWater(grid, y-1, x); } if (y+1 < grid.size() && grid[y+1][x] == '1') { setWater(grid, y+1, x); } }
void TerrainTile::decode(const int bitset) { reset(); if (bitset & 0x1) { setTree(true); } if (bitset & 0x2) { setRock(true); } if (bitset & 0x4) { setWater(true); } if (bitset & 0x8) { setBuilding(true); } if (bitset & 0x10) { setTree(true); } if (bitset & 0x20) { // setGarden(true); } if (bitset & 0x40) { setRoad(true); } if (bitset & 0x100) { //setAqueduct(true); } if (bitset & 0x200) { //setElevation(true); } if (bitset & 0x400) { int i=0; setRock( true ); //setAccessRamp(true); } if (bitset & 0x800) { //setMeadow(true); } if (bitset & 0x4000) { //setWall(true); } }
//--------------------------------------first solution--------------------------------------------------------- //@desc: DFS and BFS //@time complexity: O(m*n) //@space complexity: O(1) int numIslands(vector<vector<char>>& grid) { int ret = 0; for (int y = 0; y < grid.size(); y++) { for (int x = 0; x < grid[y].size(); x++) { if (grid[y][x] == '1') { ret++; setWater(grid, y, x); } } } return ret; }
void resetPlayer(PLAYER *whom)//int* hits, char board[8][8], char view[8][8]) { whom->hits = 0; COORDINATE target; for(int r=0; r<8; r++) { for(int c=0; c<8; c++) { setCoord(&target, c, r); setWater(&target, whom); } } }
void TerrainTile::decode(const int bitset) { clearFlags(); if (bitset & 0x1) { setTree(true); } if (bitset & 0x2) { setRock(true); } if (bitset & 0x4) { setWater(true); } if (bitset & 0x8) { setBuilding(true); } if (bitset & 0x10) { setTree(true); } if (bitset & 0x20) { setGarden(true); } if (bitset & 0x40) { setRoad(true); } if (bitset & 0x100) { setAqueduct(true); } if (bitset & 0x200) { setElevation(true); } if (bitset & 0x400) { setRock( true ); } if (bitset & 0x800) { setMeadow(true); } if (bitset & 0x4000) { setWall(true); } if (bitset & 0x8000) { setGateHouse(true); } }