Power Calculus UVA
来源:互联网 发布:淘宝详情页怎么做视频 编辑:程序博客网 时间:2024/06/05 01:51
查看网上别人打表的做法,运算最多为13次,所以我们最多循环13次。每次循环的时候设置当前的最大深度,然后在每次的dfs中首先查看是否能够继续向下循环,然后再判断按照当前的状况是否有可能得到最终的解。再将上次新产生的值和当前的旧值进行加法以及减法组合产生新的值,进行下一步的递归,查看是否能够得到最终的解即可。具体实现见如下代码:
#include<iostream>#include<vector>#include<string>#include<set>#include<stack>#include<queue>#include<map>#include<algorithm>#include<cmath>#include<iomanip>#include<cstring>#include<sstream>#include<cstdio>#include<deque>using namespace std;int n;int arr[100];int depth;bool Solve(int length_a,int cur_d,int cur_da){if (cur_d == depth){if (cur_da == n) return true;return false;}int record = 0;for (int i = 0; i < length_a; i++) record = max(record,arr[i]);if (record*(1 << (depth - cur_d)) < n) return false;for (int i = 0; i < length_a; i++){arr[length_a] = cur_da + arr[i];if (Solve(length_a + 1, cur_d + 1, arr[length_a])) return true;arr[length_a] = abs(cur_da-arr[i]);if (Solve(length_a + 1, cur_d + 1, arr[length_a])) return true;}return false;}int main(){while (cin >> n&&n){for (depth = 0; depth < 13; depth++){arr[0] = 1;if (Solve(1, 0, 1))break;}cout << depth << endl;}return 0;}
阅读全文
0 0
- UVa 1374 Power Calculus
- UVA 1374 Power Calculus
- UVA - 1374 Power Calculus
- uva 1374 Power Calculus
- uva 1374 power calculus
- Uva-1347 Power Calculus
- Power Calculus UVA
- Power Calculus UVA
- Power Calculus (UVA
- UVA 1374 Power Calculus
- Power Calculus UVA
- uva 1374 Power Calculus
- UVA 1374 - Power Calculus(迭代深搜)
- uva 1374 - Power Calculus(迭代深搜)
- UVa 1374 - Power Calculus (DFSID)
- UVA - 1374 Power Calculus 迭代深搜
- IDDFS--UVA - 1374 Power Calculus
- UVA 1374(p211)----Power Calculus
- 【LeetCode】Permutation II(带重复元素的排列)
- Hibernate 第一个hibernate程序
- POJ总结(3094)
- 【bzoj3231】[Sdoi2008]递归数列(矩乘)
- Hibernate 配置详解
- Power Calculus UVA
- 1026程序运行时间(模拟)
- 小车定位所需相关内容了解
- python七之数据库
- 教你编写 Node.js 中间件,实现服务端缓存(附demo源码)
- FitScreen-Android屏幕适配的一种方案
- hdu 1233 还是畅通工程 kruskal
- Hibernate 日志实现
- No.0 写博客那些事