hdu1059 Dividing 搜索
2012-05-08 17:15
246 查看
题目分析:一直没想的好的好的状态设置....这个真的不会写,还是有空多看看深搜吧............
//***** #include<iostream> #include<cstdio> using namespace std; int halfvalue; int a[7],sum,SUM,flag; void dfs(int v,int pre)//用当前的所组成的价值当做一个状态量 { //参考了别人的代码....这个pre状态设置的太巧了 if(flag==1) //值得好好学习!!! return; if(v==halfvalue) { flag=1; return; } for(int i=pre;i>=1;i--) { if(a[i]!=0) { if(v+i<=halfvalue) { a[i]--;//为啥这样??? dfs(v+i,i); if(flag==1) break; } } } return; } int main() { int c=1; while(1) { sum=0,SUM=0; for(int i=1;i<=6;i++) { scanf("%d",&a[i]); sum+=a[i]; SUM+=i*a[i]; } if(sum==0) break; if(SUM%2==1) { printf("Collection #%d:\nCan't be divided.\n\n",c++); continue; } flag=0; halfvalue=SUM/2; dfs(0,6); if(flag==1) printf("Collection #%d:\nCan be divided.\n\n",c++); else printf("Collection #%d:\nCan't be divided.\n\n",c++); } system("pause"); return 0; }
相关文章推荐
- HDU 1059 Dividing (多重背包)
- hdu 1059 Dividing 多重背包 超级水题 ★
- HDU 1059 Dividing 多重背包
- poj1014 hdu1059 Dividing 多重背包
- [hdu1059]Dividing 多重背包
- [0-1背包]HDU 1059 Dividing
- hdu1059 Dividing 【多重背包】
- hdu 1059 Dividing(多重DP)
- HDU1059 Dividing(多重背包,二进制优化,模板题)
- HDU-1059 Dividing (多重背包)
- HDU1059 && POJ1014 :Dividing(多重背包)
- HDU 1059 Dividing
- zoj 1149 && hdu 1059 && poj 1014 Dividing
- HDU 1059 Dividing
- hdu 1059 Dividing (多重背包详解)
- hdu 1059 Dividing 多重背包
- 【HDU - 1059 Dividing】 混合背包
- HDU 1059 Dividing 多重背包
- hdu 1059 Dividing(多重背包)
- HDU 1059 POJ 1014 Dividing (多重背包)