设为首页 加入收藏

TOP

POJ 2044 Weather Forecast
2015-07-24 06:28:48 来源: 作者: 【 】 浏览:24
Tags:POJ 2044 Weather Forecast

题意:有一朵2*2的云朵,和一个4*4的地区。被云层覆盖的区域在当天一定有雨下,云层有4种移动方式 。但是规定在城市或者节日期间希望不要下雨,而且一个地方不能有连续7天没下雨。

思路:首先解决一个地方不能有连续7天没下雨的情况,要让地图上的所有地方都覆盖到的话,只要4个角都覆盖到的话,就行了,因为要到那里就要经过所有的了,然后就是状态的记录了,vis[k][sign][a][b][c][d],表示第k天点是sign的四个格子的下雨情况

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       using namespace std; struct node { int a,b,c,d; node():a(0), b(0), c(0), d(0) {} }; struct point { int x,y; point(int _x, int _y):x(_x), y(_y) {} }; const int dir[9][2] = {{0, 0}, {-1, 0}, {-2, 0}, {0, -1}, {0, -2}, {1, 0}, {2, 0}, {0, 1}, {0, 2}}; int vis[370][9][7][7][7][7]; int day[370], n; int getFlag(int i) { return 1<
      
       = 0 && nx < 3 && ny >= 0 && ny < 3) if (dfs(k+1, point(nx, ny), s)) return 1; } return 0; } int main() { while (scanf("%d", &n) != EOF && n) { for (int i = 0; i < n; i++) { day[i] = 0; for (int j = 0; j < 16; j++) { int x; scanf("%d", &x); day[i] <<= 1; day[i] |= x; } memset(vis[i], 0, sizeof(vis[i])); } node s; if (dfs(0, point(1, 1), s)) printf("1\n"); else printf("0\n"); } return 0; }
      
     
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇编程基础知识――C/C++,Java,ObjC.. 下一篇SDYT OJ-2891玲珑龟

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: