USACO1.2 Name That Number 解题报告
来源:互联网 发布:淘宝标志图片大全 编辑:程序博客网 时间:2024/05/15 23:52
解题思考顺序:
Attempt:很简单的把字典读进去了顺序查找,然后又很天真的把数字用递归进行了全排列,自己在本机上实验的结果很理想。。可是悲剧的就是严重超时!
Attempt:后来试着不用递归求出全排列,貌似还是很困难的。。卡住了很久很久。。至今没有编出来,还是代码能力不行
Attempt:我在别人的解题报告中也发现了有同样超时的问题,他也试过,二分查找字典也是很慢的,同样超时。。。
Final:经过网上搜索。。突然看到作者提示,从字典出发匹配数字。这也就是枚举的难点所在!
本题体现出了枚举的难点:枚举的方式
枚举的方法决定了这次大工程的耗时情况,比方说顺序查找算法复杂度为O(5000×3^12),二分查找的复杂度为O(3^12log5000)同样有一个3^12很大的系数。后来的方法只需要O(5000×12)的复杂度。
从这一点就可以看出有的题目可以使用枚举法,但是枚举的方式特殊,需要先思考问题,并且思考问题的时候要心里记得出其不意,正反思考!
下面贴出我的程序(这也是有史以来我感觉usaco最短的程序了):
/*ID: ******PROG: namenumLANG: C++*/#include<stdio.h>#include<iostream>#include<string.h>#include<fstream>using namespace std; FILE*fp; int map[100],len,flag,i,FLAG=0; char s[1000],t[1000];int main(){ map['A']=2;map['B']=2;map['C']=2;map['D']=3;map['E']=3;map['F']=3; map['G']=4;map['H']=4;map['I']=4;map['J']=5;map['K']=5;map['L']=5; map['M']=6;map['N']=6;map['O']=6;map['P']=7;map['R']=7;map['S']=7; map['T']=8;map['U']=8;map['V']=8;map['W']=9;map['X']=9;map['Y']=9; fp=fopen("namenum.in","r"); fscanf(fp,"%s",&s); len=strlen(s); ifstream cin("dict.txt"); ofstream cout("namenum.out"); while(cin>>t) { if(strlen(t)==len) { flag=1; for(i=0;i<len&&flag;i++) if(map[t[i]]!=s[i]-'0') flag=0; if(flag==1) { FLAG=1; cout<<t<<endl; } } } if(FLAG==0)cout<<"NONE"<<endl; return 0;}
经过最近的一些日子不断的刷题,代码能力增进不少,从以前的几行代码都要调试,到现在30行内的不用调试,值得我自己庆祝一下的。但是还有很大的发展空间,就像有篇文章里面所说,要达到100行以内不需要调试,还是有很大的差距的。
- USACO1.2 Name That Number 解题报告
- USACO1.2 Name That Number
- usaco Name That Number 解题报告
- USACO1.2.3 Name That Number (namenum)
- USACO1.2.3 Name That Number (namenum)
- 10.8做题——USACO1.2命名那个数字(Name That Number)
- USACO1.2.3 Name That Number(命名那个数字)
- USACO Training Section 1.2 Name That Number 解题报告&AC代码
- USACO Name That Number 解题日志
- usaco 1-2-3 Name That Number
- USACO-Section1.2 Name That Number
- USACO Section1.2 Name That Number
- USACO-Section1.2 Name That Number
- USACO-Section1.2 Name That Number
- USACO-Section1.2 Name That Number [其他]
- USACO:Name That Number
- Name That Number(USACO)
- Name That Number
- Android开发环境搭建与起步--太详细了,一步一步图文教你
- javase--4容器
- AS高手们的博客
- 2012我想要学的东西
- 【转】OMAP35x下OneNand的分析以及x-loader的介绍
- USACO1.2 Name That Number 解题报告
- struts的一些琐碎知识(二)
- 《Python网络编程》学习笔记(01)
- phpMyadmin在Windows下无法加载mcrypt
- 达沃斯讨论最大的技术革命机会
- Linux内核 - 等待队列的使用
- 关于mmap的一点疑问
- ios 柱图和饼图
- POJ1962 Corporative Network 并查集