
算法
梦之吃吃
这个作者很懒,什么都没留下…
展开
-
《算法竞赛入门》 习题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 · 572 阅读 · 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 · 583 阅读 · 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 · 339 阅读 · 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 · 668 阅读 · 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 · 336 阅读 · 2 评论 -
2020-12-09
习题2-4 子序列的和(subsequence)输入两个正整数n<m<106,输出 ,保留5位小数。输入包含多组数据, 结束标记为n=m=0。提示:本题有陷阱。样例输入:2 465536 6553600 0样例输出:Case 1: 0.42361Case 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 · 149 阅读 · 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 · 234 阅读 · 0 评论