算法
梦之吃吃
这个作者很懒,什么都没留下…
展开
-
《算法竞赛入门》 习题3-4 周期串
习题3-4 周期串 如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的字符串,输出其最小周期。 思路: 既然是由某个长度k的字符串重复得到,那么总长度必然是某个数的整数倍,而这个整数倍必然小于等于总长度的1/2。那么就可以遍历从一到一半总长,一一尝试是否为最小周期。要在Uva上AC的话,请根据样例输入输出更改代码。代码如下: #include <iostream> #in原创 2021-01-30 19:25:44 · 482 阅读 · 0 评论 -
习题 3-3 数数字
习题 3-3 数数字 把前n(n<=10000)个整数顺次写在一起,123456789101112……,数一数0~9各出现多少次(输出10个整数,分别是0,1,2,……,9出现的次数 思路 看了一些网上其他答案,发现其中有一些是有错误的。 他们开了一些很大的数组,比如char s[10001]来存放输入,这里其实至少有三个问题。 空间复杂度过大, 即使开了这么大的空间,仍然没有解决问题 程序效率低下 如果认真地阅读了前面的例题和思考,就会发现,处理字符问题通常分为两种,一种是需要用数组存储输入原创 2021-01-27 22:04:11 · 514 阅读 · 0 评论 -
习题3-2 分子量
3-2分子量(Molar Mass) 给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol)。例如,C6H5OH的分子量为94.108g/mol。 思路: 本题难度不大,是属于字符串处理一类的问题。有两个关键点。 输入量中可能是字母+数字也可能是字母+另一个字母,想要处理这样的情况就要在处理当前字符之前,判断下一个字符是字母还是数字,以此来做不同的处理。 另一个关键点就原创 2021-01-25 23:32:09 · 281 阅读 · 0 评论 -
习题3-1 得分
习题3-1 得分 给出一个由O和X组成的串(长度为1~80),统计得分,每个O的得分为母亲连续出现的O的个数,X的得分为0。例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3。 #include <stdio.h> #include <iostream> #include <string.h> char buffer[100]; //存放输入的数组 int main() { //int flag;原创 2021-01-25 22:39:58 · 568 阅读 · 0 评论 -
习题2-6 排列(permultation)
习题2-6 排列(permultation) 题目描述:用1,2,3…,9 组成3个三位数 abc,def 和 ghi,每个数字恰好使用一次,要求 abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必太动脑筋。 总结:用的是最笨的办法,不过也体现了暴力枚举的特点。 #include <stdio.h> int main() { int a,b,c,d,e,f,g,h,i; for (a = 1; a <= 9; a+原创 2020-12-26 00:25:43 · 216 阅读 · 2 评论 -
2020-12-09
习题2-4 子序列的和(subsequence) 输入两个正整数n<m<106,输出 ,保留5位小数。输入包含多组数据, 结束标记为n=m=0。提示:本题有陷阱。 样例输入: 2 4 65536 655360 0 0 样例输出: Case 1: 0.42361 Case 2: 0.00001 #include <stdio.h> double SubseQuence(int n,int m); int main() { int n,m,count=0; while(s原创 2020-12-09 11:57:45 · 106 阅读 · 0 评论 -
《算法竞赛》习题2-3倒三角形
《算法竞赛》习题2-3倒三角形 尝试了一下用递归实现倒三角形。 重复性且数量有规律改变的任务都可以尝试用递归解决。 #include <stdio.h> int triangle(int n); int count; int main() { while(scanf("%d",&count) && count) triangle(count); } int triangle(int n) { if(原创 2020-12-09 11:29:22 · 187 阅读 · 0 评论