POJ 3254 Corn Fields状态压缩DP
2013-07-31 21:29
495 查看
下面有别人的题解报告,并且不止这一个状态压缩题的哦····
http://blog.csdn.net/accry/article/details/6607703
下面是我的代码,代码很挫,绝对有很大的优化的空间····
View Code
http://blog.csdn.net/accry/article/details/6607703
下面是我的代码,代码很挫,绝对有很大的优化的空间····
#include <cstdio> #include <cstring> int dp[2][400]; int st[400]; //检查一行的奶牛放置情形是否合理 //即是否有相邻的两个1,没有返回true bool checkHori(int state) { if(!(state & (state << 1)) ) return true; else return false; } //检查竖直方向的奶牛放置情形是否合理 //即是否竖直方向有相同的1 bool checkVert(int a,int b) { if(!(a&b)) return true; else return false; } //看该位置是否是肥沃的土地 //关系式自己推出来 bool checkPos(int map,int state) { if( (map| state) == map) return true; else return false ; } int init(int n) { int num=0; for( int i=0; i<(1<<n); ++i ) { if(checkHori(i)) { st[num++] = i; } } return num; } int main() { // freopen("in.cpp","r",stdin); int m,n; scanf("%d%d",&m,&n); int num=init(n); memset(dp,0,sizeof(dp)); dp[0][0] = 1; int x=0; for(int i=1; i<=m; ++i) { int t,tmp=1,map =0; //map用来记录第i行土地的土壤状态 for(int d=0; d<n ; ++d) { scanf("%d",&t); map += t*tmp; tmp *=2; } x =1-x; for(int j=0; j< num; ++j) dp[x][j] = 0; //滚动数组,用时间换空间 for(int j=0; j< num; ++j) { for(int k=0; k < num; ++k) { if(checkPos(map,st[k]) && (i == 1 || checkVert(st[k],st[j]) ) ) dp[x][k] += dp[1-x][j]; } } } int ans=0; for(int i=0; i< num; ++i) { ans += (dp[x][i] % 100000000); ans %= 100000000; } printf("%d\n",ans); return 0; }
View Code
相关文章推荐
- poj-3254-Corn Fields-状态压缩DP
- POJ 3254 Corn Fields (状态压缩DP)
- POJ 3254 Corn Fields (状态压缩DP)
- POJ-3254 Corn Fields 入门级状态压缩DP
- POJ-3254 Corn Fields 状态压缩DP+滚动数组
- POJ 3254 Corn Fields 状态压缩dp 查找情况数
- POJ 3254 Corn Fields 状态压缩DP
- POJ 3254 Corn Fields 状态压缩DP (C++/Java)
- POJ 3254 Corn Fields【状态压缩DP】
- POJ 3254 Corn Fields(状态压缩DP)
- POJ 3254 Corn Fields 状态压缩DP (C++/Java)
- poj 3254 Corn Fields ,状态压缩DP
- POJ 3254 Corn Fields(状态压缩DP)
- POJ —— 3254 Corn Fields(状态压缩dp)
- poj 3254 Corn Fields (状态压缩dp)
- poj 3254 Corn Fields (状态压缩DP)
- poj 3254 Corn Fields(状态压缩DP)
- POJ 3254 Corn Fields(状态压缩DP)
- POJ 3254 Corn Fields(状态压缩dp)
- poj 3254 Corn Fields (状态压缩dp)