![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Thinking in Algorithm
Zeal Young
一直默默生长的知识控
展开
-
Coursera 学习记录:单词翻转(使用递归并通过空格分隔实现分段翻转)
描述输入一个句子(一行),将句子中的每一个单词翻转后输出。输入只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。所谓单词指的是所有不包含空格的连续的字符。这道题请用cin.getline输入一行后再逐个单词递归处理。输出翻转每一个单词后的字符串,单词之间的空格需与原文一致。打印要求:hello wroldolleh dlrowcin.getlin...原创 2018-10-22 19:28:20 · 1027 阅读 · 0 评论 -
算法记录:求圆周率pi的近似值中遇到的小问题。
题目求圆周率PI的近似值,直到发现某一项的绝对值小于10-6为止(该项不累加)。要求输出的结果总宽度占10位,其中小数部分为8位。程序中使用浮点型数据时,请定义为双精度double类型。如果需要计算绝对值,可以使用C语言数学库提供的函数fabs,如求x的绝对值,则为fabs(x).;用到的用圆周率公式如下:π = (4/1) - (4/3) + (4/5) - (4/7) + ...原创 2019-04-07 10:41:31 · 692 阅读 · 0 评论 -
算法记录:用二维数组实现“杨辉三角”的输出
题目按要求输入如下格式的杨辉三角11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1最多输出10层实现的方法有很多,我想到的算是比较简单的一种,只需要一个数组加循环语句就行。嗯,这是算法学习初期的水平吧~#include <cstdio>int main(){ int n; scanf...原创 2019-04-07 17:00:23 · 1690 阅读 · 1 评论 -
算法记录:直接比较字符的数值大小
### 题目类似于从键盘上输入3个字符串,求出其中最大者。输入输入3行,每行均为一个字符串。输出一行,输入三个字符串中最大者。### 思考与纠结点字符在计算机中是以ASCII码存在的,所以肯定有数值的大小关系,所以尝试直接进行加和,**但是,发现出问题了!!!**如下:#include <cstdio>#include <cstring&g...原创 2019-04-07 19:29:10 · 1563 阅读 · 0 评论 -
PAT B1012数字分类:关于测试点5和6无法通过的问题分析
问题点:A1的条件判断,如果将能被5整除和是偶数分开判断,那么就没问题;但是如果把它们合并在一起,用逻辑与判断,就会有问题。两次代码如下:#include <cstdio>int main(){ int n, temp; scanf("%d", &n); int arrange[5] = {0}; int counts[5]...原创 2019-04-21 09:54:01 · 1104 阅读 · 7 评论 -
PTA A1031. Hello World for U(使用fgets注意换行符的读入)
题目描述如下:1031Hello World for U(20point(s))Given any string ofN(≥5) characters, you are asked to form the characters into the shape ofU. For example,helloworldcan be printed as:h de ll...原创 2019-04-28 11:13:30 · 287 阅读 · 0 评论 -
PTA1031:查验身份证。这个挺有趣,记录一下~
题目描述如下:1031查验身份证(15point(s))一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:Z:0 1 2 3 4 5 6 7 8...原创 2019-04-28 16:14:31 · 828 阅读 · 0 评论 -
算法思考:如何写出一个递归算法?(最大子列和问题)
有这么一种感觉,递归算法在思考角度上是“显得很懒惰的”,为什么这么说呢?因为递归的本质是自己调用自己,机器这么做很干净利落,一步一步来就好,只要把每一次递归的条件改动一下就好。但是我们人脑在思考递归时就显得很吃力……(因为在硬件的底层实现,递归是很恐怖的,要不断的开新栈,然后再逐个返回收栈,可能是我脑子的缓存不够用吧,多想那么几个复杂的就崩了)不过,要写出一个递归函数还是很容易的。...原创 2019-05-05 10:43:38 · 721 阅读 · 0 评论 -
PTA 二分查找问题(非数组实现)
问题来自与一道练习题,属于程序填空,需要根据已有条件进行补充,具体说明如下:函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Dat...原创 2019-05-05 15:33:43 · 1250 阅读 · 0 评论 -
算法笔记:由二叉树思考“m叉树的结点数关系”
二叉树设n0是度为0的结点,即叶子结点,设n1是度为1的结点,设n1为度为2的结点,现在思考这三种结点之间的关系?一种思考的逻辑:观察结点与结点间边的关系一种方式: 边的总数为n0 + n1 + n2 - 1,可以看成:只有根结点没有上接的边; 另一种方式:0 * n0 + 1 * n1 + 2 * n2,这里看的就是每个结点下接的边; 两式结合在一起,就能化简出:n0 = n...原创 2019-05-08 18:54:00 · 1741 阅读 · 0 评论 -
Coursera 学习记录:走出迷宫(二维数组的上下左右判断以及递归调用)
描述当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路。输入第一行是两个整数n和m(1 <= n,m <= 100),表示迷宫的行数和列数。接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符’.’表示空地,’#’表示墙,’S’表示起点...原创 2018-12-25 22:38:07 · 2136 阅读 · 0 评论 -
Coursera 学习记录:寻找平面上的极大点((x,y)坐标值的储存及二维数组的冒泡排序)
描述在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y>=b;用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。本题规定:n不超过100,并且不考虑点的...原创 2018-12-24 14:16:07 · 886 阅读 · 0 评论 -
Coursera 学习记录:细菌分组(通过冒泡排序实现两组有差异的分类)
描述有一种细菌分为A、B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显著差别,A亚种繁殖能力非常强,B亚种的繁殖能力很弱。在一次为时一个小时的细菌繁殖实验中,实验员由于疏忽把细菌培养皿搞乱了,请你编写一个程序,根据实验结果,把两个亚种的培养皿重新分成两组。输入输入有多行,第一行为整数n(n≤100),表示有n个培养皿。其余n行,每行有三个整数,分别代表培养皿编号,试验...原创 2018-10-20 11:33:11 · 538 阅读 · 1 评论 -
Coursera 学习记录:Tomorrow never knows?(实现日期加一的操作)
描述甲壳虫的《A day in the life》和《Tomorrow never knows》脍炙人口,如果告诉你a day in the life,真的会是tomorrow never knows?相信学了计概之后这个不会是难题,现在就来实现吧。读入一个格式为yyyy-mm-dd的日期(即年-月-日),输出这个日期下一天的日期。可以假定输入的日期不早于1600-01-01,也不晚于2...原创 2018-10-20 12:44:44 · 713 阅读 · 0 评论 -
Coursera 学习记录:四大湖排序(使用bool值的小技巧)
描述我国有4大淡水湖。A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。C说:洪泽湖最小,洞庭湖第三。D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。已知这4个湖的大小均不相等,4个人每人仅答对一个,请编程按照鄱阳湖、洞庭湖、太湖、洪泽湖的顺序给出他们的大小排名。输出为4行,第1行为鄱阳湖的大小名次,从大到小名次分别表示为1、2...原创 2018-10-20 12:49:12 · 1064 阅读 · 0 评论 -
Coursera 学习记录:发票统计(使用switch进行数据归类)
描述有一个小型的报账系统,它有如下功能:(1)统计每个人所报发票的总钱数(2)统计每类发票的总钱数将此系统简化为如下:假设发票类别共有A、B、C三种;一共有三个人,ID分别为1、2、3。输入系统输入包含三行,每行第一个数为人员ID(整型,1或2或3),第二个数为发票总张数(张数不超过100),之后是多个发票类别(字符型,A或B或C)和相应发票金额(单进度浮点型,不超过1000...原创 2018-10-20 12:54:26 · 1150 阅读 · 0 评论 -
Coursera 学习记录:流感传染(关于二维数组的标记和统计)
描述有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。请输出第m天得流感的人数。输入第一行一个数字n,n不超过100,表示有n*n的宿舍房间。接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表...原创 2018-10-20 15:35:55 · 602 阅读 · 0 评论 -
Coursera 学习记录 :排队游戏(通过递归调用的括号匹配问题以及while循环的巧用)
描述在幼儿园中,老师安排小朋友做一个排队的游戏。首先老师精心的把数目相同的小男孩和小女孩编排在一个队列中,每个小孩按其在队列中的位置发给一个编号(编 号从0开始)。然后老师告诉小朋友们,站在前边的小男孩可以和他后边相邻的小女孩手拉手离开队列,剩余的小朋友重新站拢,再按前后相邻的小男孩小女孩手拉 手离开队列游戏,如此往复。由于教师精心的安排,恰好可以保证每两个小朋友都能手拉手离开队列,并且最后...原创 2018-10-25 20:37:05 · 983 阅读 · 0 评论 -
Coursera 学习记录:复杂一些的符号匹配(栈的后进先出思想)
描述在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用”$”标注,不能匹配的右括号用”?”标注.输入输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母...原创 2018-11-28 17:56:00 · 205 阅读 · 0 评论 -
Coursera 学习心得:二维数组右上左下遍历(通过限制循环条件遍历数组)
描述给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组。输入输入的第一行上有两个整数,依次为row和col。余下有row行,每行包含col个整数,构成一个二维整数数组。(注:输入的row和col保证0 < row < 100, 0 < col < 100)输出按遍历顺序输...原创 2018-11-28 19:43:22 · 638 阅读 · 0 评论 -
Coursera 学习记录:字符串中次数第2多的字母(字母大小写转换以及遍历数组寻找特定字符项)
描述输入一串长度不超过500个符号的字符串,输出在串中出现第2多的英语字母(大小写字母认为相同)和次数(如果串中有其它符号,则忽略不考虑)。如果有多个字母的次数都是第2多,则按串中字母出现的顺序输出第1个。例 ab&dcAab&c9defgb这里,a 和 b都出现3次,c和d都出现2次,e、f 和 g 各出现1次,其中的符号&和9均忽略不考虑。因此,出现第2多...原创 2018-12-23 18:35:42 · 1138 阅读 · 1 评论 -
算法笔记:静态链表实现树的同构判断
写在最前面按照课程讲解的思路来写,逻辑关系能够理解清楚了,但是实际运行起来实在是有问题,虽然在PTA上能够通过。但是我自己看不出问题来,并且,看了一遍又一遍仍然看不出来!(可能自己太笨。。)这就说明有着很严肃的问题!所以,与其这样纠结,不如按照自己理解的思路来写一遍。补充一下题目要求给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例...原创 2019-05-09 21:38:53 · 185 阅读 · 0 评论