uva 10400 Game Show Math

发布时间:2014-10-22 14:03:51编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"uva 10400 Game Show Math",主要涉及到uva 10400 Game Show Math方面的内容,对于uva 10400 Game Show Math感兴趣的同学可以参考一下。

题意:满足表达式,用DFS记忆化搜索,把到当前运算符所得的结果记录下来,起初用回溯一直错#include <cstdio> #include <cmath> #include <cstring> #include <iostream> using namespace std; int flag,n,b[101],ans,a[101],vis[100][64001]; void dfs(int sum,int deep) { if (deep > n && sum == ans) { flag=1; return; } if (flag || deep > n || abs(sum) > 32000) return; for (int i = 1; i <= 4; i++) { b[deep-1] = i; int s = 32001; if (i == 1) s = sum + a[deep]; if (i == 2) s = sum - a[deep]; if (i == 3) s = sum * a[deep]; if (i == 4 && (sum % a[deep] == 0)) s = sum / a[deep]; if (abs(s) <=32000 && vis[deep-1][s] == 0) { vis[deep-1][s]=1; dfs(s,deep+1); } if (flag) return; } } int main() { int t; scanf("%d",&t); while (t--) { scanf("%d",&n); for (int i = 1; i <= n; i++) scanf("%d",&a[i]); scanf("%d",&ans); flag=0; memset(vis,0,sizeof(vis)); dfs(a[1],2); if (flag) { for (int i =1 ; i < n; i++) { printf("%d",a[i]); if (b[i] == 1) printf("+"); if (b[i] == 2) printf("-"); if (b[i] == 3) printf("*"); if (b[i] == 4) printf("/"); } printf("%d=%d\n",a[n],ans); } else printf("NO EXPRESSION\n"); } return 0; }


上一篇:paip.输入法编程--词频调整原则--发音长度优先
下一篇:Android开发_Android数据的四种存储方式

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款