博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 10626(记忆化搜索)
阅读量:6621 次
发布时间:2019-06-25

本文共 1637 字,大约阅读时间需要 5 分钟。

题意大概是一个自动售货机,然后你有1元,5元,10元三种面值的硬币去买8元一罐的可乐,问你最少投的的硬币数目。可乐只能一罐一罐买,每买一罐机器都会给你找零(eg:一枚10元买一罐可乐得到3枚1元找零)。数据量为1 <= 可乐数 <= 1500 <= n1 <= 5000 <= n5 <= 100 and 0 <= n10 <= 50.

我最先能想到的是开一个思维数组递推,但是显然会超时。于是就考虑能不能优化掉一维,在最初是考虑可不可以利用贪心先用完其中的一种面值然后再将剩下来的dp,显然这是一个错误的思想。

正确做法是利用记忆化搜索,应为对于每种币值的组合我们都可以算出总和再根据和原有钱的差价就能知道已经买了几罐可乐。所以根据这个可以减去一维,再利用记忆化搜索算出答案。代码如下:

1 #include 
2 #include
3 #include
4 #define INF 0x7fffffff 5 using namespace std; 6 7 int T, mon[3], c, f[1000][200][100], vis[1000][200][100]; 8 9 int dp(int x, int one, int five, int ten)10 {11 if(vis[one][five][ten]==1) return f[one][five][ten];12 vis[one][five][ten] = 1;13 if(x==0) return f[one][five][ten] = 0;14 int ret = INF;15 if(ten>=1) ret = min(ret, dp(x-1, one+2, five, ten-1)+1);16 if(ten>=1 && one>=3) ret = min(ret, dp(x-1, one-3, five+1, ten-1)+4);17 if(five>=2) ret = min(ret, dp(x-1, one+2, five-2, ten)+2);18 if(five>=1 && one>=3) ret = min(ret, dp(x-1, one-3, five-1, ten)+4);19 if(one>=8) ret = min(ret, dp(x-1, one-8, five, ten)+8);20 return f[one][five][ten] = ret;21 }22 23 int main()24 {25 //freopen("in.txt" ,"r", stdin);26 //freopen("out.txt", "w", stdout);27 28 scanf("%d", &T);29 while(T--){30 memset(mon, 0, sizeof mon);31 memset(vis, 0, sizeof vis);32 memset(f, 0, sizeof f);33 scanf("%d", &c);34 for(int i=0; i<3; i++)35 scanf("%d", &mon[i]);36 printf("%d\n", dp(c, mon[0], mon[1], mon[2]));37 }38 return 0;39 }

 

转载于:https://www.cnblogs.com/shu-xiaohao/p/3294514.html

你可能感兴趣的文章
阿里云文件存储NAS简介及应用场景
查看>>
“数据结构+算法”视角的Asprova
查看>>
最严新规发布 网络短视频平台该如何降低违规风险? ...
查看>>
好程序员分享javascript中数组化的一般见解
查看>>
云服务器ECS出现速度变慢 以及突然断开怎么办?
查看>>
208亿背后的“秘密”
查看>>
美国自动驾驶法案今年通过无望,美议员发誓称明年继续
查看>>
Android系统自带样式(android:theme)解析
查看>>
全志A33开发板Linux内核定时器编程
查看>>
全栈必备 敏捷估点
查看>>
一个爬虫小技巧
查看>>
作为一名合格的JAVA架构师需要点亮哪些技能树?
查看>>
为什么短视频会让人刷不停?背后也许用了这套技术
查看>>
Kubernetes 在知乎上的应用
查看>>
读C#开发实战1200例子记录-2017年8月14日11:20:38获取汉字编码值
查看>>
JFinal 开发的轻量级商城系统 JFinalShop 1.0 发布
查看>>
FastAdmin 极速后台管理框架 1.0.0.20190301_beta
查看>>
Nginx-静态资源
查看>>
OC与JS之间的互调
查看>>
转载: iOS之ProtocolBuffer搭建和示例demo
查看>>