- 博客(20)
- 收藏
- 关注
原创 最长递增子序列问题(算法导论作业15.4-5、15.4-6)
问题描述对于长度为n的序列S[1...n],找出长度最大的子序列,其子序列的每个元素均递增。15.4-5、时间复杂度O(n^2)刚看到这题时,想到了个投机取巧的方法。因为书中此节介绍了LCS(最长公共子序列)算法,于是可以直接将这个序列排序O(nlogn),然后将排序后的序列与原序列求LCS O(n^2),就可以求得解。后来经同学提醒,由于序列中可能存在重复元素,所求子序列只能保证非递...
2018-11-18 14:12:52 1444 2
原创 算法导论中红黑树插入算法的C+实现及优化改进
之前在上到算导的红黑树插入时,突然冒出个想法,下课的时候找徐教授交流,由于当时也没想透彻加上表述不清,就没深入下去。恰巧实验课要做红黑树插入的实现,于是整理了一番,记录于此以备以后查看。由于C++水平太菜,代码基本用C实现,用到了一些C++的新特性。一、红黑树插入实现首先是结点的数据结构,一共5个,分别是数据、颜色、指向左右孩子和父结点的指针,具体代码如下typedef stru...
2018-11-05 10:40:09 684
原创 第一章
函数题Position BinarySearch( List L, ElementType X ){ Position head, rear; head = 1, rear = L->Last; while(head <= rear){ if(L -> Data[(head + rear) / 2] == X) return (head + rear) / 2; e...
2018-05-04 10:40:33 210
原创 二战浙大失利+调剂科大教训帖
本打算调剂结果出了就总结下备战考研一路走来的经验教训,无奈拖延症发作,直至今日才静下心来认真总结一番。 先说说自己的基本情况,供各位学弟学妹参考。 我本科南京一所普通211,机械工程及自动化专业,结构设计方面工作了快7年,对cs一无所知,而且本科成绩很烂,绩点2.1差点没能毕业,这么多年也基本忘光,可以说算是真正的从零开始。我大概是16年过年期间兴起的跨考念头,第一战心态没调整好,专业课复习...
2018-04-18 00:45:12 31194 22
原创 PAT A1020
模板题,考察建树和遍历的基本操作坑点:注意输出格式,建立变量num记录已输出的节点,最后一个节点后没有空格AC代码如下#include <iostream>#include <queue>using namespace std;const int max_n = 40;int n,post[max_n],in[max_n];struct node{ int ...
2018-03-13 11:23:57 397
原创 PAT A1052
思路:将所有节点sort一下,按从小到大输出坑点:给出节点可能有无效节点,故需要先把输入保存起来,再找出有效节点,另外还有全是无效节点的特殊情况。AC代码如下:#include <iostream>#include <algorithm>using namespace std;const int max_n = 100010;struct Node{ int ...
2018-03-11 17:10:03 322
原创 PAT A1132
AC代码如下#include <iostream>#include <cstring> using namespace std;int char_to_int(char str[],int l,int r){ int num = 0; for(int i = l ;i <=r ;i++){ num *= 10; num += (str[i] - ...
2018-03-11 15:16:14 403
原创 PAT A1128
AC代码如下#include <iostream>#include <cmath>using namespace std;const int max_k=210;int output[max_k]={0};const int max_n=1100;int queen[max_n]={0};bool is_solution(int n,int a[]){...
2018-03-11 15:15:03 479
原创 PAT A1120
AC代码如下#include <iostream>using namespace std;const int max_n=10010;int num[max_n]={0};int ID[100]={0};int friendID(int a){ int sum = 0; do{ sum+=a%10; a/=10; }while(a); return su...
2018-03-11 15:08:27 210
原创 PAT A1116
AC代码如下#include <iostream>#include <iomanip>using namespace std;const int max_n = 10010;int contestants[max_n] = {0};//记录参赛者的名次int query[max_n];bool is_prime_num(int num) { //只有名次2...
2018-03-11 15:06:52 203
原创 PAT A1112
思路:每读入字符判断是否为stucked,若不是加入not_stuck表,若是加入stuck表,最后输出stuck表及按规则输出原串坑点:要分两次遍历,第一次更新not_stuck表,第二次更新stuck表,否则遇到一个字符未被阻塞还需去检查之前有没有加入stuck表AC代码如下#include <iostream>#include <cstring>using nam...
2018-03-11 15:05:40 333
原创 PAT A1059
思路:先找出素数,然后分别判断是否为其因子。坑点:1、输入为1时单独输出。AC代码如下#include <iostream>#include <cmath>using namespace std;const int max_n = 100010;bool is_prime(int n){ if(n == 1) return false; int sqr = ...
2018-03-11 14:59:26 290
原创 PAT A1025
AC代码如下#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int max_n=30010;struct Student{ char id[15]; int score; int location_number; int l...
2018-03-11 14:55:52 161
原创 PAT A1011
水题,AC代码如下:#include <iostream>using namespace std;double profit=1.0;char max_three(double a,double b,double c){ if(a>b){ if(a>c) { profit*=a; return 'W'; } else { profit*...
2018-03-11 14:53:33 158
原创 PAT A1060
主要思路:将输入的两个字符串转化成科学计数法,然后比较指数和底数是否全部相等。坑点:1、0001要正确把前面0删去2、若数据为0,需要将指数置为0AC代码如下#include <iostream>#include <string>using namespace std;const int max_n = 110;struct science_num{ stri...
2018-03-11 14:50:35 191
原创 PAT A1032
很简单的一题,两个链表共用尾节点,找出第一个共用节点的地址。主要思路:先求两个链表的表长,然后将长的一个先行遍历,直至两者相等,然后两表同时遍历,找到公共节点,将其输出。坑点:因为用int存储的地址,注意输出格式补齐5位AC代码如下#include <iostream>#include <cstring>using namespace std;const int m...
2018-03-11 14:44:20 587 1
原创 PAT A1008
没什么难点,AC代码如下#include <iostream>using namespace std;const int max_n = 110;int floor[max_n]={0}; int spend_time(int from , int to) { if(from < to) return 6*(to-from); else return 4*(fro...
2018-03-08 01:17:40 178
原创 PAT A1005
因为数据和在0-900之间,故可以采用一种取巧的方法,直接分成0-9,10-99,100-900三段输出AC代码如下#include <iostream>using namespace std;const int max_n = 110;char N[max_n];const char *num[]={"zero","one","two","three","four",&
2018-03-08 00:58:26 163
原创 PAT A1002
解题思路:1、构造结构体poly,包含两个成员(指数和系数),将输入的两个多项式分别保存到两个poly数组;2、比较两个多项式的低幂项,将指数较低的 指数和系数 作为和多项式的 指数和系数,若指数相同,则将系数和作为和多项式的系数(注意此处有一坑点,若两个多项式系数刚好为相反数,则和多项式系数为0);3、按格式输出和多项式。AC代码如下#include <iostream>using...
2018-03-07 23:14:35 192
原创 PAT A1001
此题数据规模不大,可将a,b定义为int,直接将其相加即可。此题的难度在于要按照规定的格式输出sum,主要有两种思路。1,将sum从个位起,按位存放到字符数组中,每存3位,加上一个逗号,然后将字符数组从高位输出;2,将sum从低位起,每3位存放到整形数组中,然后从高位输出,输出注意补0和逗号。AC代码如下,采用第二种思路#include <iostream>using n...
2018-03-07 21:31:29 452
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人