POJ 1014 Dividing
2016-01-17 16:53
253 查看
突然忘记怎么写背包,数据量比较小干脆直接深搜了一下,感觉速度还可以,相当于从大到小开始选然后暴力搜索,搜索到结果以后跳出,没有任何剪枝优化= =
#include <iostream> #include <memory.h> #include <cstdio> using namespace std; int marble[7]={0}; int sum = 0; int half = 0; int caseID = 1; bool flag = false; void DFS(int value,int index){ //printf("value: %d\n",value); if(flag) return; if(value == half){ //printf("final value: %d\n",value); flag = true; return; } for(int i=index;i>=1;--i){ if(marble[i]){ if(value + i <= half){ marble[i]--; DFS(value + i,i); } } //DFS(value,i-1); if(flag) break; } } int main(){ while(true){ memset(marble,0,sizeof(marble)); sum = 0; half = 0; flag = false; for(int i=1;i<=6;++i){ scanf("%d",&marble[i]); sum += i*marble[i]; } if(!sum) break; if(sum%2){ printf("Collection #%d:\n",caseID++); printf("Can't be divided.\n\n"); continue; } half = sum/2; DFS(0,6); if(flag){ printf("Collection #%d:\n",caseID++); printf("Can be divided.\n\n"); } else{ printf("Collection #%d:\n",caseID++); printf("Can't be divided.\n\n"); } } //system("pause"); return 0; }
相关文章推荐
- oracle&nbsp;date常量格式
- oracle序列详解
- user_segments和user_objects
- user_segments和user_objects
- Oracle表空间、段、区和块简述(转…
- oracle的段管理
- Oracle数据库的段类型详解
- 关于&nbsp;laptop-mode-tools&nbsp;的设置
- 关于oracle中varchar2的最大长度
- Oracle&nbsp;中的exception——(Raise)
- GLOBAL&nbsp;TEMPORARY&nbsp;TABLE
- ORACLE_UNQNAME
- 11g&nbsp;重建EM&nbsp;报ORA-20001…
- Oracle&nbsp;PL/SQL过程与函数hell…
- 清除dash中应用程序残留信息
- ubuntu下安装bochs
- tr用法
- Lenovo&nbsp;Thinkpad&nbsp;X240&nbsp;&amp;&nbsp;Xubuntu
- 在Matlab中通过JDBC连接Oracle&amp;nbs…
- ubuntu14.04下用gcc及gfortran编写…