自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 04-树4 是否同一棵二叉搜索树

分析:对于给定的初始插入序列和待检查序列来说,第一个数一定是根结点;之后比根结点小的数组成的序列(相对位置不变)就是左子树,同理大的就是右子树根据分析1中的左右子树序列,第一个数又分别是他们的根结点综上,只需不停递归,直到左右子树至少有一方无左右子树为止;在递归过程中,若对应的左子树序列出现了相应位置元素不同的情况,那么就不是同一棵树代码如下#include <iostrea...

2019-11-30 23:06:46 103

原创 03-树3 Tree Traversals Again

分析:题意:给出一棵二叉树的中序遍历步骤(栈思路),输出后序遍历结点根据中序思路可知,当push一个结点时,若上一步是push,则该结点是上一步push结点的左子树;若上一步是pop,则该结点是pop结点的右子树思路:按照分析2梳理整个树的每个结点及其左右结点将根节点放进一个栈中,重复执行步骤3,直到栈为空判断栈顶结点,若该结点无左右子树,该结点出栈;若该结点有左子树,左子树...

2019-11-26 11:14:53 188

原创 02-线性结构4 Pop Sequence

题意:第一行输入三个整数M N K,分别代表栈容量,进栈序列长度,待核实的出栈序列行数随后K行输入出栈序列,要求核实其是否是一个可能的出栈序列分析:根据题意,出栈元素只能是从1到N可以根据当前的出栈元素,判断栈内剩余元素数量以及栈顶元素又通过剩余元素数量及栈顶元素判断下一个出栈元素是否符合栈要求代码如下#include <iostream>using nam...

2019-11-21 10:10:10 145

原创 03-树1 树的同构

思路:基本参照慕课上的浙大数据结构思路来,判断同构的函数处做了一些小修改代码如下#include <iostream>using namespace std;typedef struct tree{ char ch; int Left, Right; }Tree;Tree T1[10], T2[10];int CreatTree(Tree T[]);bool ...

2019-11-21 09:49:42 85

原创 1056 组合数的和

分析:每个数字在个位数和十位数上都出现了N-1次代码如下#include <iostream>using namespace std;int num[11];int main() { int N; scanf("%d", &N); for(int i = 0; i < N; i++) scanf("%d", &num[i]); int...

2019-11-06 17:04:52 83

原创 1050 螺旋矩阵

分析:找m和的时候,m的值从N遍历到srqt(N),找出m和n差值最小的那一对难点在于怎么输出螺旋形,一个想法是按照螺旋形的顺序将排好序的数据依次放入一个二维数组中可以用4个while实现2中步骤代码如下#include <iostream>#include <algorithm>#include <cmath>using namespac...

2019-11-06 16:49:40 93

原创 1051 复数乘法

复数乘法过程:代码如下#include <iostream>#include <cmath>using namespace std;int main() { double R1, P1, R2, P2; scanf("%lf %lf %lf %lf", &R1, &P1, &R2, &P2); double A, B;...

2019-11-06 16:34:17 75

原创 1045 快速排序

思路一(很瓜的思路):遍历数据的同时更新该数据左边的最大值将原数据从小到大排序后放入另外一个数组中,再将这些数据存在另外一个数组的对应下标里作为右方最小值遍历数据时,若当前右方最小值等于该数据,将对应元素置零,右方最小值变为后边的第一个非零值采用思路一可以求解,然而存放右方最小值的数组大小达到了109,该思路行不通上网查询,参考该博客的思路二,三,写下代码思路2#includ...

2019-11-05 22:02:55 76

原创 02-线性结构3 Reversing Linked List

分析:用结构体数组来模拟实现链表,每个元素的下标代表其地址新开一个数组,按顺序存储一个完整链表中的所有结点再开一个数组,将2中数组的元素按每K个反向存储的方式存储,最后输出代码如下#include <iostream>using namespace std;struct Node{ int ad, data, next;};struct Node Nd[10...

2019-11-05 12:21:07 112

原创 1049 数列的片段和

分析:20分,暴力求解多半超时,需要降低时间复杂度列出N = 4 的所有子序列(底色黄),找规律(最简方法见最后方,该分析有问题)也就是说,将所有底为黄的数字相加就是要输出的结果了横着看的话,当序列第i个元素i开头,该行的所有和就等于i个i的全序列和(即从第一个元素相加到第i个元素)相加,再减去i之前的所有全序列和所以,在输入时就计算出i的全序列和,放入数组中,就简单了代码如下...

2019-11-02 17:16:28 110

原创 1048 数字加密

分析:根据题意,并不难,就是要点在于按要求逐个处理单个数字唯一一点不好处理的是输入的A和B不一定等长,所以还需要在短的字符串前面填充字符,使得二者等长;WA了一次(测试点2和5),因为我用的其他字符填充,查询其他人答案发现需要用’0’填充所以我仍然不知道为什么要填‘0’,按照输入样例的理解,如果对应位上A没有数字,直接输出该位置上的B不就行了吗代码如下#include <i...

2019-11-02 15:32:33 115

原创 1044 火星数字

火星人是以 13 进制计数的:分析:题目要求输入数字转化为火星文,或者输入火星文转化为数字从输入样例中可以看出,输入数据类型与个数不可控,需要判断用空格判断输入数据个数,用第一个输入数据的类型来确定输入类型将火星文放在数组中,对应下标是它们对应的数字思路:使用string来读取数据,%c读取第一个数据之后的空白符,确定是回车还是空格,再确定是否读取第二个数据若第一个数据是数字...

2019-10-31 16:27:07 96

原创 02-线性结构1 两个有序链表序列的合并

分析:题目要求写一个函数,将递增链表L1和L2合并为一个非递减函数比较两链表的首结点,选其中最小值放入有序链表中,然后将剩下的值和最小值的下一个结点值比较重复2,直到有一条链表的所有结点都已排序将另外一条链表的剩余结点全部接上思路:创建一个结点,作为最终链表的头结点再创建三个结点指针,分别指向已排序链表的尾结点,链表L1,L2的未排序部分的首结点根据分析2,3,4写入代码...

2019-10-31 10:38:32 123

原创 1042 字符统计

思路:老办法,出现次数放在以对应ASCII码为下标的数组元素里逐个读取字符,不是字母直接跳过,若是大写转小写#include <iostream>#include <cctype>using namespace std;int asc[130] = {0}; int main() { char ch; while(ch != '\n') { s...

2019-10-29 19:09:13 68

原创 1040 有几个PAT

分析:根据题意,对于给定的字符串来说,能组成多少个PAT,关键在于有多少个A对于每个A而言,它能组成的PAT个数是它前面的P个数和后面的T个数的乘积最后把每个A能组成的PAT个数相加即可思路:将字符存入数组的同时统计T个数遍历数组,统计当前出现的P和T的个数当遍历到A时,将P * (T总数-T当前个数)加到和sum中如果sum大于1000000007,取余代码如下#i...

2019-10-29 18:43:55 62

原创 1039 到底买不买

思路:用各字符的ASCII码表示下标,数组相应元素表示该字符出现次数代码如下#include <iostream>using namespace std;int num1[130] = {0};int num2[130] = {0};int main() { char ch; scanf("%c", &ch); while(ch != '\n') { ...

2019-10-28 15:44:14 67

原创 1038 统计同成绩学生

思路:建立一个数组,每个元素存储其下标对应成绩出现的次数代码如下#include <iostream>using namespace std;int num1[101] = {0}; //存放成绩为下标的人数 int main() { int N; scanf("%d", &N); for(int i = 0; i < N; i++) { in...

2019-10-28 15:16:38 56

原创 1037 在霍格沃茨找零钱

思路:直接按照减法算A-P就行代码如下#include <iostream>using namespace std;int swap(int &a, int &b);int main() { int G1, G2, G3, S1, S2, S3, K3, K1, K2; scanf("%d.%d.%d %d.%d.%d", &G1, &...

2019-10-28 14:53:21 65

原创 01-复杂度2 Maximum Subsequence Sum

该题和 01-复杂度1 最大子列和问题 类似,题目要求输出给的序列的子序列最大和,另外增加了几点要求如果输入序列全是负数,和输出0,还要输出第一个和最后一个元素如果有不只一串子序列的和是最大的,那么需要输出这些子序列的最左端和最右端中的最小索引值对应的值(也就是第一个满足的字串的左右值)分析:根据 在线处理 算法找最大子序列,在找的过程中,如果ThisSum为0,说明开始找新的一段...

2019-10-26 22:11:06 168

原创 01-复杂度1 最大子列和问题

根据中国MOOC大学上浙大的数据结果课程给出的 在线处理 算法,在此对该算法的思路再进行一遍梳理题目要求求出子序列的最大和,那么如何确定该子序列呢首先,对于随便一个子序列,假设当前序列和ThisSum已经小于0,那么对于它的前后任何一个序列,都是不应该把它加上去的,因为这样之后会让新的序列和减小;所以,序列和为负数的子序列需要抛弃换句话说,序列和为负数的子序列,不能参与到其他序列中,它...

2019-10-26 20:22:49 116

原创 1035 插入与归并

输入样例 1:103 1 2 8 7 5 9 4 6 01 2 3 7 8 5 9 4 6 0输出样例 1:Insertion Sort1 2 3 5 7 8 9 4 6 0输入样例 2:103 1 2 8 7 5 9 4 0 61 3 2 8 5 7 4 9 0 6输出样例 2:Merge Sort1 2 3 8 4 5 7 9 0 6分析:首先写出插入与归并...

2019-10-23 22:18:58 294

原创 1034 有理数四则运算

输入样例 2:5/3 0/6输出样例 2:1 2/3 + 0 = 1 2/31 2/3 - 0 = 1 2/31 2/3 * 0 = 01 2/3 / 0 = Inf分析:输入保证分子分母是整型范围内的整数,负号只会出现在分子前,分母不为0;需要考虑进行乘积运算过程中是否有溢出的中间数按格式输出两个有理数的最简运算结构;若为负数,需加括号;若除法分母为0,输出Inf思路...

2019-10-18 17:22:58 242

原创 1033 旧键盘打字

分析:输入第一行是坏掉的键(大写字母表示该字母的键坏了,大小写都不能输出),输入第二行是应该输出的字符输出实际输出的字符如果上档键坏了字母就不能输出大写思路:数组bad统计坏键(除去上档键),flag标识上档键好坏数组inpu统计本应输出字符,核对每一个字符是否是坏键,若是将相应字符置为#若上档键已坏,未坏的字母只能输出小写考虑无坏键的情况...

2019-10-05 10:36:32 116

原创 1032 挖掘机技术哪家强

分析:用num[n]记录学校编号为n的总分,再输出最大值#include <iostream>using namespace std;int num[100005] = {0};int main() { int N; cin >> N; for(int i = 1; i <= N; i++) { int n, score; cin &gt...

2019-10-04 10:28:03 78

原创 1031 查验身份证

输入样例1:432012419880824005612010X19890101123411010819671130186637070419881216001X输出样例1:12010X19890101123411010819671130186637070419881216001X输入样例2:2320124198808240056110108196711301862输出样...

2019-10-04 09:57:20 103

原创 1030 完美数列

分析:输出能组成完美序列的最大个数,也就是说需要知道符合条件的最大最小值,还有这两值之间的数字个数考虑将输入序列先排序,再同时从首尾找符合条件的最大最小值,这样也可以用下标来计算最大最小值之间的个数思路:先将N个正整数从大到小排序,这里放到数组num中,下标从1开始,方便理解可以先检验完美序列最大个数为N,也就是说检验num[N]*p是否等于num[1]如果2不成立,检验完美序...

2019-10-04 09:55:12 71

原创 1029 旧键盘

分析:第一行是应该输入的键,第二行是实际输入的键要求输出坏掉的键,每个坏键输出一次,如果坏键是字母,输出大写格式题中规定至少有一个坏键,所以不用考虑坏键数目为0的情况判断坏键:对两行序列的第一个字符开始判断如果相等都往后移一个字符并判断如果不相等,第一行往后移一个字符,第二行不变输出坏键,用一个数组记录所有坏键,有新坏键时先判断是否重复,未重复则将该坏键记录(若坏键是字母,不区...

2019-10-03 14:35:09 165

原创 1028 人口普查

分析:过滤不合理的数据:超出200岁和未出生找出最年长和最年轻的人思路:用string name[i]存储姓名,string birth[i]存储出生日期过滤出生日期大于2014/09/06,小于1814/09/06的数据统计有效人数,直接比较出生日期代码如下#include <iostream>#include <string>using n...

2019-10-03 10:12:54 104

原创 1027 打印沙漏

分析:要求尽可能用掉多的符号,根据沙漏形状,假设第一层需要用n个符号只需满足2 * (1+2+3+…+n) - 1 >= N就满足用掉最多符号了沙漏上半部:第零行空格数为0,符号数为n;第一行空格数为1,符号数为n-2;…所以第i行空格数为i,符号数为n-2*i;沙漏下半部(除去重合部分):第一行符号数为3,空格数为(n-3)/2;第二行符号数为5,空格数为(n-5)/2...

2019-10-03 09:33:39 72

原创 1026 程序运行时间

分析:对输入样例验算了一遍首先C2-C1,之后四舍五入得到总秒数sum再将秒数转换为几时几分几秒(注意格式)

2019-09-30 12:14:01 103

原创 1024 科学计数法

分析:将输入的实数A分成几部分分别存放根据题意判断这几部分并输出思路(参考输入样例+1.23400E-03,依次读入字符):opt1存储’+’,opt2存储’-’;char s[10000] 存储"1.23400",int num存储"03"符号位:opt1为正就不输出,负就输出opt2为负:左移小数点num位先输出num个0(格式为0.000…),再输出s1(不输...

2019-09-30 10:56:44 175

原创 1023 组个最小数

分析:把给定的数字按从小到大排序输出(第一个不能是0)注:考虑考虑输入只有0的情况…(被坑怕了)思路:把输入的数放进一个数组中,循环找最大值并输出,输出后置为-1...

2019-09-30 09:30:39 65

原创 1022 D进制的A+B

分析:其实就是把十进制数A+B的和转换为D进制数模拟十转二的除基取余法思路:为了防止不必要的麻烦,A和B还是用long吧除基取余:将A+B的和除以D,取每次的余数,直到商为0...

2019-09-28 12:27:17 49

原创 1021 个位数统计

分析:N最大1000位,果断string再用一个数组num统计各个数字出现次数#include <iostream>#include <string>using namespace std;int main() { string N; cin >> N; int len = N.size(); int num[10] = {0}; ...

2019-09-28 11:15:19 51

原创 1020 月饼

输入样例:3 2018 15 1075 72 45输出样例:94.50分析:(一开始以为要DP,吓得想跳题,5s后发现想多了)计算每种月饼的单价(一个获利多少)先把最高的卖完,再把第二高的卖完,直到达到市场需求量思路:用一个数组num记录各种月饼的库存用一个数组pro记录各种月饼的单价这里在输入第三行的时候,每读取一个数字就计算相应单价最后按照分析2进行分配#...

2019-09-28 11:01:02 53

原创 1019 数字黑洞

输入样例 2:2222输出样例 2:2222 - 2222 = 0000分析:特殊情况:正整数N的四位数全相同,直接输出N - N = 0000N的四位数不完全相同,需要按题意输出计算步骤,直到差等于6174计算步骤格式:A - B = C其中A(B)是上一个C的4个数字非递增(减)排序得到的新数,第0个C是N由输入样例1知,非递增排序就是递减排序(相同的数碍着放),同理非递...

2019-09-28 10:03:54 89

原创 1018 锤子剪刀布

输入样例:10C JJ BC BB BB CC CC BJ BB CJ J输出样例:5 3 22 3 5B B思路:不想多的,直接列出所有情况,统计次数。//1018 锤子剪刀布#include <iostream>using namespace std;int main() { int N; cin >> N; int ga...

2019-09-27 15:09:54 57

原创 1017 A除以B

分析:A不超过1000位,只能用数组来表示它。采用模拟除法的方法,即把A的每一位都除以B得到当前位的商,当前余数*10加上下一位再除以B得到下一位的商,依次循环//1017 A除以B#include <iostream>#include <string>using namespace std;int main() { string A; int B, Q,...

2019-09-27 10:41:30 109

原创 1016 部分A+B

输入样例 1:3862767 6 13530293 3输出样例 1:399输入样例 2:3862767 1 13530293 8输出样例 2:0分析:统计A中有n个DA,B中有n个DB,输出PA+PBPA:DADADA(n个DB) PB:DBDBDB(n个DB)//1016 部分A+B#include <iostream>using namespace st...

2019-09-27 10:21:19 45

原创 1015 德才论

输入样例:14 60 8010000001 64 9010000002 90 6010000011 85 8010000003 85 8010000004 80 8510000005 82 7710000006 83 7610000007 90 7810000008 75 7910000009 59 9010000010 88 4510000012 80 1001000...

2019-09-27 09:53:56 70

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除