2014年2月27日

摘要: 原题链接题目大意:给一句话,把每个单词倒序,然后输出。解法:我是用了一个堆栈,以空格来拆分单词,把每个字母压入堆栈,然后依次输出。参考代码:/** 字符串反向,140ms,188kb* 单词反向用堆栈是比较方便的,一个个压入,遇到空格再一个个弹出* 但是不知道为什么耗时这么多,大批的人都是0ms,160kb,难道用字符串处理效率高这么多?*/#include#include#include#includeusing namespace std;int main(){ int i,j,n,cases; string str; char *p,c[80]; stack word; cin>& 阅读全文
posted @ 2014-02-27 00:24 KK4SBB 阅读(409) 评论(0) 推荐(0)
 
摘要: 原题链接题目大意:首先学习一个生物学的单词,exon:外显子,DNA序列中能够翻译表达的片段。给出很多外显子的起始点和终点,求寻找包含最多外显子的一条链,并且输出这些外显子的编号。解法:先把所有外显子按照起始点的先后排序,相同起始位置的则看终止位置。然后就是一个一个查找,如果当前外显子的终点在下一个外显子之后,就跳过当前的;否则就输出当前外显子的编号。这里使用了vector来存储外显子。写了一段判断大小的代码,作为sort()函数的判断条件,有必要做个标记。参考代码:#include#include #include #includeusing namespace std;struct Exo 阅读全文
posted @ 2014-02-27 00:24 KK4SBB 阅读(511) 评论(0) 推荐(0)
 
摘要: 原题链接题目大意:贪吃蛇的简化版,给出一串操作命令,求蛇的最终状态是死是活。解法:这条蛇一共20格的长度,所以用一个20个元素的队列表示,队列的每个元素是平面的坐标。每读入一条指令,判断其是否越界,是否咬到了自己。若都没有,把改点压入队列,front元素弹出。参考代码:#include#include#includeusing namespace std;struct Point{ int r; int c;};queue worm;bool isItself(queue,Point);int main(){ int i,n; char str[102]; Point temp; char x 阅读全文
posted @ 2014-02-27 00:24 KK4SBB 阅读(428) 评论(0) 推荐(0)
 
摘要: 原题链接题目大意:有一种抽奖游戏乐透(Lotto),规则是从1到49这49个自然数中随机抽取6个数。现在有一种简化版的游戏,先在49个数里面选出k(6解法:输入的数字已经按照升序排列好了。数字范围不大,最多也就是13选6,所以可以暴力破解法。六层for循环解决问题。如果数据量再大的话,就要用深度优先搜索了。参考代码:#includeusing namespace std;int main(){ int k,i,s[13]={0}; int a,b,c,d,e,f; bool first=true; while(cin>>k&&k!=0){ if(!first){ c 阅读全文
posted @ 2014-02-27 00:24 KK4SBB 阅读(305) 评论(0) 推荐(0)
 
摘要: 原题链接题目大意:Arbitrage这个单词的解释是“套利交易”,就是利用几个币种之间的汇率差价来赚钱。比如人民币兑美元6:1,美元兑欧元1.5:1,欧元兑人民币10:1,那么用9元人民币可以换1.5美元,1.5美元换1欧元,1欧元换10元人民币。这样一倒手,就赚了1元。这是闷声发大财的典型例子!解法:在做这道题的时候,又学会了一种新的算法(Floyd算法)。具体过程是开辟一个方阵,每行每列都对应一种货币,每个元素就是横纵两种货币的汇率。然后是一个三层循环,最外层的循环是表示过度节点的,这一层必须放在最外面,里面两层是行和列的扫描。如果经过某一个过渡点汇率增加了,就更新这个节点。这里还要注意一 阅读全文
posted @ 2014-02-27 00:24 KK4SBB 阅读(431) 评论(0) 推荐(0)
 
摘要: 原题链接题目大意:给一个16位的数字,表示一个浮点数,按照规则转换成科学计数法表示。解法:注释比较清楚了,注意浮点运算的四舍五入问题。参考代码:#include#include#include#include#includeusing namespace std;int main(){ char in[16],out[16]; int i,j,n,exp,man,zero; double num; cout10-1e-6){ while(num>10-1e-6){ num/=10; exp++; } } else if(num=0){ cout-10)cout<<... 阅读全文
posted @ 2014-02-27 00:23 KK4SBB 阅读(221) 评论(0) 推荐(0)
 
摘要: 原题链接题目大意:给定一串字符串,查找字符串里字母逆序排列的对数,按照由少到多的顺序把所有字符串进行排列。解法:用C++字符串string类的iterator,从每个字符串的起始开始,查找逆序字符的个数,然后用qsort方法按照reverseCount的大小快速排序。参考代码:#include#include#include#include#includeusing namespace std;struct DNAStr{ int index,reverseCount; string str;}DNA[102];int countReverse(string s){ int num = 0; 阅读全文
posted @ 2014-02-27 00:23 KK4SBB 阅读(366) 评论(0) 推荐(0)
 
摘要: 原题链接题目大意:按照规则解码。26个字母分成三组,每一组按照顺时针移位编码。现在已知移动的位数,要求解码。解法:以前看过一本古典密码学的书,百度贴吧密码吧也有很多经典的加密方法,想什么凯撒移位、弗吉尼亚编码等等。古典密码学比现代密码学有趣多了。这道题可以开三个队列,先把字符串压入对应的队列,然后调整顺序,再合成输出。不难,稍烦。参考代码:#include#include#include#includeusing namespace std;int main(){ int k1,k2,k3,i,len,pos[100]; char str[100],c; queue s1; queue s2; 阅读全文
posted @ 2014-02-27 00:23 KK4SBB 阅读(474) 评论(0) 推荐(0)
 
摘要: 原题链接题目大意:给出12个月的收入,求一个平均值。解法:没什么好说的,就是一个除法。参考代码:#includeint main(){ int i; float sum=0,k; for(i=0;i<12;i++){ scanf("%f",&k); sum+=k; } sum=sum/12; printf("$%.2f",sum); return 0;} 阅读全文
posted @ 2014-02-27 00:23 KK4SBB 阅读(283) 评论(0) 推荐(0)
 
摘要: 原题链接题目大意:一道类似于简单图像压缩的题目。给定一个调色板,然后把24位真彩色按照就近原则聚类。解法:每个像素的色彩都是RGB三个值,相当于三维空间的一个点。所以当一个新的像素进来时,分别和调色板中的每一个颜色求欧式距离,距离最近的那个点就是应该归属的那个类。参考代码:#include#include#define R 0#define G 1#define B 2int target[16][3];int main(){ int i,j,min,index; int RGB[3]; float dist; for(i=0;i<16;i++){ scanf("%d%d%d& 阅读全文
posted @ 2014-02-27 00:23 KK4SBB 阅读(284) 评论(0) 推荐(0)