![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
自主学习-数据结构与算法
自主学习-数据结构与算法
华岩寺扎克伯格
Being humble and diligent.
展开
-
树的同构 (25分)
树的同构 (25分)思路分析:树的同构,顾名思义两个树是否有一样的结构,每一个孩子结点的孩子的数量和值都要相同,但是它所在的位置可以左右交换(不是说两个父亲结点的孩子互相交换,而是说父亲结点的下一层孩子的左右可以交换),这样就转化了越来越小的树比较是否同构,假如有两个树A,B。A树的左子树和B树的右子树同构,B树的左子树和A树的右子树同构,那么这两个树是同构的,也就是说,又回到了之前括号里面的说的,左右顺序没有关系。我们将结点以结构体数组的方式存储,一个树就是一个结构体数组,每一个结构体数组包含的原创 2020-07-24 21:30:48 · 2141 阅读 · 0 评论 -
汉诺塔问题
汉诺塔问题题目:相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。思路分析:本体看起来十分繁琐,但是通过逐步分割问题便可以解开谜题。假设移动3块金盘,如图所示:运用递归思想可以很好的解决,其核原创 2020-07-19 11:26:46 · 308 阅读 · 0 评论 -
自测-5 Shuffling Machine (20分)
自测-5 Shuffling Machine (20分)思路分析:对于英文题目首先要分析题目,题目大概的意思是,按照给定的顺序,对一副全新的(54张牌)扑克牌进行洗牌,我首先想到的就是又是对数组的数字进行交换,这必然会用到两个循环控制,一个控制交换的总次数,一个控制交换的具体实现。对于扑克牌的实现,我本来想的是用string函数的方法将一个字符和数字连接在一起,但是发现有点麻烦,于是又想到直接输入每个扑克牌作为字符串数组,但是54张牌又有一点多,于是我参考了另一位博主的办法(这里是链接),用到了结构体来定原创 2020-07-17 17:52:09 · 260 阅读 · 2 评论 -
自测-4 Have Fun with Numbers (20分)
自测-4 Have Fun with Numbers (20分)思路分析:文章的大概意思是:输入一串k位(k<=20)数字n,将它乘以2,得到结果数字m,m中出现的数字是否和输入的数字n中出现的数字次数一样,即由相同数字组成,只是位置发生了变化,如果是,就返回yes,如果不是,就返回no由于最大可以输入20位的数字,就算是long long 类型的整型也存储不了,而且如果存在一个整型变量中,会导致不好判断每一个数字出现的次数,于是将这个数存放在字符串类型,string,char[]比较合适通过遍原创 2020-07-17 13:27:33 · 216 阅读 · 2 评论 -
自测-3 数组元素循环右移问题 (20分)
自测-3 数组元素循环右移问题 (20分)思路分析:整个数组向右移动,也就是说要移动的位数,移动到了数组的左边方法一:也就是笨办法,将要移动的数列中的最后一个数保存到临时变量,再将剩下的每一个数依次往右移动,最后用临时变量覆盖,即移动到向右移动后的位置。方法二:通过数组的逆置来实现,第一次逆置整个数组,第二次分两部分(以要移动的数量为界)先逆置左边,第三次逆置右边方法一:#include <iostream>#define MAX 100using namespace std;i原创 2020-07-17 10:04:49 · 321 阅读 · 2 评论 -
自测-2 素数对猜想
自测-2 素数对猜想思路分析:首先明确素数的概念:除1和本身以外再无其他的因数的非零自然数(自己想的,并不准确),题目的重点是*“存在无穷多对相邻且差为2的素数”*,其中给出的任意正整数为N(<10^5)。我们可以知道从1开始的素数有:1.2.3.5.7.11.13.17…其中当我们求一个数的因数的时候,只需要从1算到这个数的开方就可以了因为如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。#includ原创 2020-07-16 21:59:59 · 170 阅读 · 2 评论 -
自测-1 打印沙漏 (20分)
自测-1 打印沙漏 (20分)2020.7.16https://pintia.cn/problem-sets/17/problems/type/7思路分析:可以发现,沙漏的形状从1个字符,分别向上和向下生成,生成第二个沙漏的时候,沙漏顶和沙漏底分别有3个字符,以此类推,生成第三个沙漏时,顶层和底层分别有5个字符,设n为生成沙漏的序列,则沙漏顶层和底层分别有2n-1个字符。将沙漏分别上下两部分,上部分包含中间的一个字符,设h为上三角的层数,则可以发现,h = n,通过规律的查找,还可以发现,可以构成原创 2020-07-16 20:35:23 · 276 阅读 · 2 评论