vijos P1051 送给圣诞夜的极光
生活随笔
收集整理的這篇文章主要介紹了
vijos P1051 送给圣诞夜的极光
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
調了好久。。。
#include <cstdio> #include <queue> using namespace std;char a[110*110]; /************************************** 000000000000 000000000000 00----####00 00###----#00 //like dis 00##--##--00 000000000000 000000000000 **************************************/ int visited[110*110]; int cnt; int of1x[] = {-1, 0, 1, 0}; int of1y[] = {0, -1, 0, 1}; int of2x[] = {0, 1, 2, 1, 0, -1, -2, -1}; int of2y[] = {2, 1, 0, -1, -2, -1, 0, 1};int main(){int m, n;scanf("%d%d", &m, &n);getchar();for(int i = 2; i < m+2; ++i){for(int j = 2; j < n+2; ++j){a[i*(n+4)+j] = getchar();}getchar();}n = n+4;queue<int> Q;for(int i = 0; i < (m+4)*n-1; ++i){if(!visited[i] && a[i] == '#'){int now = i;visited[now] = 2;cnt++;Q.push(now);do{//搜索附近 now = Q.front();Q.pop();int x = now%n;int y = now/n;if(visited[now] == 2){ //now是第二圈 for(int ii = 0; ii < 4; ++ii){int pos = (y+of1y[ii])*n + (x+of1x[ii]);if(!visited[pos] && a[pos] == '#'){visited[pos] = 1;Q.push(pos);}}}for(int ii = 0; ii < 8; ++ii){int pos = (y+of2y[ii])*n + (x+of2x[ii]);if(!visited[pos] && a[pos] == '#'){visited[pos] = 2;Q.push(pos);}}}while(!Q.empty());}}printf("%d", cnt);return 0; }轉載于:https://www.cnblogs.com/will7101/p/6506673.html
總結
以上是生活随笔為你收集整理的vijos P1051 送给圣诞夜的极光的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux学习笔记(4):Ubuntu终
- 下一篇: 视图view的生命周期的一点见解