UVa 10400 - Game Show Math
来源:互联网 发布:ubuntu 远程唤醒 编辑:程序博客网 时间:2024/05/24 01:20
題目:已知一串數字,在數字直接添加四則運算(+-*/),優先級為左側優先,
求是否能是的計算的結果為題目給定的數字(除法要餘數為零才能進行)。
分析:動態規劃、dp。利用dp從前向後地推。
每次將當前所有可行解與下一個數字進行四種則運算,結果在範圍內即為新的可行解。
說明:好久沒做過dp了╮(╯▽╰)╭。
#include <cstring>#include <cstdio>#define formap(x) ((x)+32000)#define revmap(x) ((x)-32000)#define range(L, x, R) ((x) >= L && (x) <= R)int f[101][64004], p[101][64004], value[101];char o[101][64004];int save(int id, int v, int parent, char operat){f[id][v] = 1;p[id][v] = parent;o[id][v] = operat;}int output(int id, int v){if (id > 1) {output(id-1, p[id][v]);printf("%c%d",o[id][v],value[id]);}else {printf("%d",value[id]);}}int main(){int n, m, ans;while (~scanf("%d",&n)) while (n --) {scanf("%d",&m);for (int i = 1; i <= m; ++ i) {scanf("%d",&value[i]);}scanf("%d",&ans);memset(f, 0, sizeof(f));f[1][formap(value[1])] = 1;for (int i = 2; i <= m; ++ i) {for (int j = 0; j <= 64000; ++ j) {if (!f[i-1][j]) {continue;}if (range(-32000, revmap(j)+value[i], 32000)) {save(i, formap(revmap(j)+value[i]), j, '+');}if (range(-32000, revmap(j)-value[i], 32000)) {save(i, formap(revmap(j)-value[i]), j, '-');}if (range(-32000, revmap(j)*value[i], 32000)) {save(i, formap(revmap(j)*value[i]), j, '*');}if (revmap(j)%value[i]) {continue;}if (range(-32000, revmap(j)/value[i], 32000)) {save(i, formap(revmap(j)/value[i]), j, '/');}}}if (f[m][formap(ans)]) {output(m, formap(ans));printf("=%d\n",ans);}else {puts("NO EXPRESSION");}} return 0;}
0 0
- UVa 10400 - Game Show Math
- uva 10400 - Game Show Math
- uva 10400 - Game Show Math
- UVa 10400 - Game Show Math
- UVA 10400 - Game Show Math
- uva 10400 Game Show Math
- uva 10400 Game Show Math
- UVA 10400 Game Show Math
- uva 10400 Game Show Math
- UVa 10400 - Game Show Math
- uva 10400 - Game Show Math
- UVA - 10400 Game Show Math
- UVa 10400 - Game Show Math
- UVA - 10400 Game Show Math
- uva 10400(Game Show Math) (DP)
- UVA - 10400 Game Show Math(回溯)
- UVA - 10400 Game Show Math DFS
- uva 10400 Game Show Math(深搜 )
- RT288x系列之MT7620uboot编译过程
- Android Service完全解析,关于服务你所需知道的一切(上)
- 最全电商分类信息(02)
- Redis和MongoDB的关系
- ffmpeg
- UVa 10400 - Game Show Math
- 编译caffe的dll库
- 118. Pascal's Triangle 简单数组问题
- MySQL执行计划解读
- mac搭建阿帕奇Apache
- 时间类
- oracle不等于号取不到null值
- Geekband C++面向对象高级编程(下) 第一周笔记 暗影行者
- 最全电商分类信息(03)