pku grid 2787 24点问题
2009-03-29 20:56
204 查看
#include <iostream> #include <cmath> using namespace std; double number[4]; /* 把这四个数看做一个集合 Ex: A = {1, 2, 3, 4}; 取出任意两个数,例如:1+2 = 3, 1-2 = -1, 2-1 = 1, 1/2 = 0.5, 2/1 = 2, 1*2 = 2; 从而得到: A= {3,3,4}, {-1,3,4}, {1,3,4}, {0.5,3,4}, {2,3,4}, {2,3,4}; . . . 从而不断划归为子问题 */ bool solve(int left) { if(left == 1) { if(fabs(number[0] - 24.0) < 1E-6) return true; return false; } for(int i = 0; i < left; ++i) for(int j = i+1; j < left; ++j) { double a = number[i]; double b = number[j]; number[i] = a + b; number[j] = number[left-1]; if(solve(left-1)) return true; number[i] = a - b; number[j] = number[left-1]; if(solve(left-1)) return true; number[i] = b- a; number[j] = number[left-1]; if(solve(left-1)) return true; number[i] = a * b; number[j] = number[left-1]; if(solve(left-1)) return true; if(b) { number[i] = a / b; number[j] = number[left-1]; if(solve(left-1)) return true; } if(a) { number[i] = b / a; number[j] = number[left-1]; if(solve(left-1)) return true; } number[i] = a; number[j] = b; } return false; } int main() { while(scanf("%lf%lf%lf%lf", &number[0], &number[1], &number[2], &number[3]) && !(number[0] == 0 && number[1] == 0 && number[2] == 0 && number[3] == 0)) { if(solve(4)) printf("YES/n"); else printf("NO/n"); } return 0; }
相关文章推荐
- GRID方式ALV导出数据到本地丢掉最后一位的问题
- asp.net jquery 调用websercie填充GRID的问题
- KendoUI之Grid的问题详解
- 安装oracle grid 时遇到的问题
- pku3308 【论】如何将二分图顶点覆盖问题转化为最小割
- EXTJS grid问题
- (博客搬迁啦)pku1276多重背包问题(http://poj.org/problem?id=1276)
- pku 3117 pku 3352 割边以及双连通分量问题
- Ext tree或者gridl在选中数据并删除选中数据,刷新数据后任选中已删除数据问题解决
- 'GridSearchCV' object has no attribute 'cv_results_' 这一问题的解决
- EXTJS 从grid 读取一行数据显示在formpanel中的 date问题
- [华为oj]24点问题
- Ext中左侧tree与右侧grid,grid分页问题
- 24点问题
- 安装GRID后,dbca创建库没有磁盘组问题解决
- hdu 1043 ,pku 1077 Eight ,八数码问题
- Arithmetically Challenged 排列树 子集树 24点问题 回溯 关联容器
- pku 1077 Eight 经典8数码问题 单向BFS + A* BFS + 双向BFS
- devpress grid表格自适应列宽的问题
- Ext中combobox在Grid里显示问题