Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int sizex, sizey;
- int [,]map;
- int [,]check;
- Dictionary<int,island_info> islands;
- class island_info
- {
- public int x; public int y; public int area;
- }
- int area(int x, int y, int island, int island_id)
- {
- //проверка выхода за границы
- if(x < 0 || y < 0 || x >= sizex || y>=sizey)
- return 0;
- //проверка принадлежности нужному острову и не проверяли ли раньше
- if(map[x,y] != island || check[x,y] != 0)
- return 0;
- //отмечаем принадлежность острову
- check[x,y] = island_id;
- /считаем площадь с соседями
- return 1 + area(x-1,y, island, island_id) + area(x+1,y, island, island_id) +area(x,y+1, island, island_id) +area(x,y-1, island, island_id);
- }
- public void Area()
- {
- check = new int[sizex,sizey];
- islands = new Dictionary<int, island_info>();
- int n = 1;
- for(int i =0;i<sizex;i++)
- for(int j=0;j<sizey;j++)
- if(map[i,j]!=0 && check[i,j]==0)
- {
- var info = new island_info();
- info.x = i;
- info.y = j;
- info.area = area(i,j,map[i,j], n);
- n++;
- islands.add(n, info);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement