UVA136解题报告
来源:互联网 发布:视频图像拼接软件 编辑:程序博客网 时间:2024/06/16 08:17
先来份错误代码,亲爱的小伙伴们,希望你们能找到其中的问题,顺便说一句,用的是广搜
#include<cstdio>#include<queue>using namespace std;int main(){ queue<long long> q; int ans=1; q.push(1); while(ans!=1500) { long long x=q.front(); q.pop(); q.push(x*2); q.push(x*3); q.push(x*5); ans++; } printf("%d\n",q.front()); return 0;}
上面是我用很短的时间写出来的很漂亮的代码,如果说有什么不完美的地方,那就是他是错的。
有两点决定了他是错的,一,没有从小到大排序,这样实际上并不能确定谁是第1500个丑数,改进方法是用优先队列
二,同一个丑数可以有不同的生成方式,没有现判断该丑数是否已生成是第二个错误,改进方法是加入set判断
AC代码如下 time 0ms
#include<cstdio>#include<queue>#include<set>#include<vector>using namespace std;typedef long long LL;int d[]={2,3,5};int main(){ set<long long> s; priority_queue<LL,vector<LL>,greater<LL> > q; int ans=1; s.insert(1); q.push(1); while(ans!=1500) { long long x=q.top(); q.pop(); for(int i=0;i<3;i++) { long long y=x*d[i]; if(!s.count(y)) { s.insert(y); q.push(y); } } ans++; } printf("The 1500'th ugly number is %lld.\n",q.top()); return 0;}
再来份搞笑版的代码,可以AC 哦
#include<cstdio>using namespace std;int main(){ printf("The 1500'th ugly number is 859963392.\n"); return 0;}
0 0
- UVA136解题报告
- uva136
- uva136
- UVA136
- UVA136
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- Antiprime解题报告
- expr解题报告
- 华容道解题报告
- tju解题报告
- zju1062/pku1095解题报告
- UsacoGate解题报告 --- 序曲
- 【OpenGL ES】着色语言GLSL
- 互联网高可用架构技术实践
- seq2seq
- 欢迎使用CSDN-markdown编辑器
- 关于学习struts2的总结与心得
- UVA136解题报告
- 等价类测试方法简单小结
- 【信息安全资质】发证机关和相关单位
- Java 并发编程知识点(二)
- iptables中的dport与sport简析
- 内容解析者_本地获取音乐2
- jQuery mobile
- 服务的基本用法-3
- poj 2346 递推 由n个可重复数字的和为某一数字的种类