![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++/算法/数据结构知识点
文章平均质量分 66
PX-C
以学好IT技术为目的。
展开
-
1336:【例3-1】找树根和孩子
【题目描述】给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子。【输入】第一行:n(结点个数≤100),m(边数≤200)。以下m行:每行两个结点x和y,表示y是x的孩子(x,y≤1000)。【输出】第一行:树根:root;第二行:孩子最多的结点max;第三行:max的孩子(按编号由小到输出)。【输入样例】8 74 14 21 31 ...原创 2018-07-11 13:18:56 · 3477 阅读 · 2 评论 -
1338:【例3-3】医院设置
【题目描述】设有一棵二叉树(如图3-8,其中圈中的数字表示结点中居民的人口,圈边上数字表示结点编号。现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻结点之间的距离为1。就本图而言,若医院建在1处,则距离和=4+12+2*20+2*40=136;若医院建在3处,则距离和=4*2+13+20+40=81……【输入】第一行一个整数n,表示树的结点数(n≤1...原创 2018-07-11 15:46:21 · 2548 阅读 · 0 评论 -
03-树1 树的同构(25 分)
#include<bits/stdc++.h>using namespace std;struct node{ char a; int right; int left;}T1[10],T2[10];int buid(node T[]);int is(int r1,int r2);int main(){ int r1,r2; r1=buid(T1);...原创 2018-05-04 16:52:37 · 249 阅读 · 0 评论 -
02-线性结构2 一元多项式的乘法与加法运算(20 分)
#include<bits/stdc++.h>using namespace std;typedef struct node *p;struct node{int a;int b;struct node *next;};typedef p l;l read();l add(l l1,l l2);void print(l l1);l m(l l1,l l2);l...原创 2018-04-26 16:28:14 · 306 阅读 · 0 评论 -
02-线性结构1 两个有序链表序列的合并(15 分)
#include <stdio.h>#include <stdlib.h>#include<bits/stdc++.h>using namespace std;typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; P...原创 2018-04-23 18:57:44 · 1184 阅读 · 2 评论 -
02-线性结构4 Pop Sequence(25 分)
#include<bits/stdc++.h>using namespace std;#define maxs 1000typedef struct node{ int c; int top; int D[maxs];}*Stack;int is(int *p,int m,int n);Stack creat(int m);int push(Sta...原创 2018-04-30 13:00:34 · 161 阅读 · 0 评论 -
最大子列和问题
#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; int s[n]; for(int i=0;i<n;i++) cin>>s[i]; int sum=0,max=0; for(int i=0;i&...原创 2018-04-12 18:01:04 · 303 阅读 · 1 评论 -
链表一
对于链表几天的学习体会:1.先做一个main()函数里的读入: #include<bits/stdc++.h>using namespace std;typedef struct _node{ int value; struct _node *Next;}Node;int main(){ //读入很多number 到-1 Node *head...原创 2018-04-16 20:58:45 · 138 阅读 · 0 评论 -
链表二
今天写数据结构题,对于链表的新写法,和对于指针的认识都有新的理解,指针真是一个好东西啊!!!#include <stdio.h>#include <stdlib.h>#include<bits/stdc++.h>using namespace std;typedef int ElementType;typedef struct Node *PtrTo...原创 2018-04-22 21:26:34 · 160 阅读 · 0 评论 -
lower_bound和upper_bound
lower_bound的参数比较sort记,看代码案例,lower_bound()返回的比某个数大于等于的一个位置比如输入2或3输出都是4。(参数可以是一个数组元素的地址(或者数组名来表示这个数组的首地址,用来表示这个数组的开头比较的元素的地址,不一定要是首地址,只是用于比较的“首”地址),一个数组元素的地址(对应的这个数组里边任意一个元素的地址,表示这个二分里边的比较的"结尾'地址),再然后就是...原创 2018-04-13 15:24:30 · 322 阅读 · 0 评论 -
对于控制位数输出
第一行是一个整数t,表示测试实例的个数;然后是t行输入数据,每行包含两个正整数n和x,表示底数和保留位数。(1 <= t <= 100,1 <= n <= 500,1 <= x <= 6)a=n π(n的π次方)#include<bits/stdc++.h>using namespace std;int main(){ const do...原创 2018-05-09 17:35:58 · 496 阅读 · 0 评论 -
深拷贝
#include <iostream>#include<cstring>using namespace std;class node{public: node(char *namel,double scorel); node(const node &n); ~node();private: char *name; d...原创 2018-05-03 16:22:42 · 185 阅读 · 0 评论 -
大整数类——乘法
#include<bits/stdc++.h>#define Max 200using namespace std;int main(){ int T; cin>>T; while(T--) { string a,b; cin>>a>>b; vector<int&...原创 2018-05-10 20:42:34 · 421 阅读 · 0 评论 -
判断是否是整数还是浮点数
其实就是m-(int)m是否是0;#include<bits/stdc++.h>using namespace std;int main(){ float m; scanf("%f",&m); if ((m-(int)m)>0) { printf("%f是浮点数\n",m); } else {...原创 2018-05-17 12:51:21 · 5328 阅读 · 3 评论 -
大整数类——加法
#include<bits/stdc++.h>#define Max 10010using namespace std;int main(){ int T; cin>>T; while(T--) { string a,b; cin>>a>>b; vector&l...原创 2018-05-11 12:45:25 · 765 阅读 · 0 评论 -
大类整数——阶乘
#include<bits/stdc++.h>#define Max 2010using namespace std;int main(){ int n; cin>>n; int s[Max]; memset(s,0,sizeof(s)); s[0]=1; int digit=1; int num=0; ...原创 2018-05-11 15:00:55 · 232 阅读 · 0 评论 -
二叉搜索树
二叉搜索树的查找,创建,删除,输出。#include<bits/stdc++.h>using namespace std;#define N 7 //查找数组的长度typedef struct treenode{ int Data; struct treenode *left; struct treenode *right;}node,*Pnode;P...原创 2018-05-05 14:32:32 · 142 阅读 · 0 评论 -
大整数类——除法(商和余)
#include<bits/stdc++.h>#define Max 100005using namespace std;int main(){ int T; cin>>T; while(T--) { string a; char s[Max]; cin>>a; ...原创 2018-05-11 21:34:53 · 2150 阅读 · 0 评论 -
线性表
建立,输出,删除,求表长,查找,插入#include<bits/stdc++.h>using namespace std;typedef struct node{ int Data; struct node *Next;}*List;List read();//建立线性表void print(List L);//输出int length(List L);//...原创 2018-05-05 21:59:22 · 125 阅读 · 0 评论 -
queue(队列) c++
#include<bits/stdc++.h>#include<queue>using namespace std;int main(){ queue<int>s; cout<<"初始队列长度"<<s.size()<<endl; cout<<"是否为空&原创 2018-05-06 12:23:38 · 224 阅读 · 0 评论 -
图——建图
方法一:邻接矩阵建图#include<bits/stdc++.h>#define Max 100using namespace std;struct node{int v;//顶点数int e;//边数int G[Max][Max];int Data[Max];//存顶点的数据};struct Enode{int v1,v2;//有向边int w;//权重...原创 2018-05-12 17:27:26 · 1728 阅读 · 0 评论 -
DFS(深度优先搜索)与BFS(广度优先搜索)
/*给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{ v1 v2 ... vk }...原创 2018-05-12 19:33:18 · 428 阅读 · 0 评论 -
最短路径
Problem Description在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? Input输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有...原创 2018-05-20 17:00:59 · 213 阅读 · 0 评论 -
stack , queue , priority_queue
一:stack#include<iostream>#include<stack>using namespace std;int main(){ stack<int>s; s.push(3); cout<<"长度"<<s.size()<<endl;//1 cout&l原创 2018-05-25 15:55:46 · 221 阅读 · 0 评论 -
动态规划(dp)
动态规划可以用递归实现,用递归实现会比较简单,就是找递归出口比较难,能找到递归的规律,那用循环就肯定能做了,dp和贪心算法还是有区别的,用递归有可能会重复算一个数,斐波那契就是一个例子,循环会把它记录下来,所以复杂度会比较小。一:理解dp就是选最大的数是多少,但是同一时间不能选;二:简单题理解就是选出和最大的数是多少,但是相邻的不能选,dp是从后往前分析,找出规律,然后写递归出口,转换成数组,递归...原创 2018-05-27 14:57:33 · 276 阅读 · 0 评论 -
快速排序
#include<bits/stdc++.h>using namespace std;//int a1[9]={56,18,6,3,30,66,8,26,88};void sortt(int a[],int l,int r){ //如果l小于r,需要排序的部分只有一个元素,方法返回 if(l>r) { return; } ...原创 2018-06-03 18:00:06 · 117 阅读 · 0 评论 -
递归
再次理解递归原创 2018-05-23 17:12:26 · 230 阅读 · 0 评论 -
并查集
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 65035 Accepted Submission(s): 34759 还是通过一题来理解并查集 Problem Description某省调查城...原创 2018-05-23 18:39:11 · 269 阅读 · 0 评论 -
最小生成树
Problem Description 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。 Input 测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随...原创 2018-05-23 21:31:26 · 350 阅读 · 0 评论 -
归并排序
可以看出归并排序就是把俩个左右拍好的俩个数组和并起来,所以合并的前提是必须是俩数组都是拍好序的如何把俩数组都排好序,哪就 需要分治的思想了#include<bits/stdc++.h>using namespace std;void mergee(int a[],int L,int M,int R){ int L_s=M-L; int R_s=R-M+1; ...原创 2018-06-04 20:27:23 · 134 阅读 · 0 评论 -
进制转换(基础)
#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; int s[100]; int flag=0; while(n) { s[flag]=n%2; n=n/2; flag++; ...原创 2018-06-05 15:51:10 · 263 阅读 · 1 评论 -
c++
#include<bits/stdc++.h>using namespace std;class Goods{public: Goods(int w,string s); void sell(); int Getweight() const; static int GetTo(); const string name;private:...原创 2018-06-06 16:48:16 · 244 阅读 · 0 评论 -
二分
1.具有单调性的题目2.可判断的题目3.会减少复杂度对于二分+贪心算法组合的题,如果最开始不清楚原理的话确实有一些难理解。其实弄懂原理后,很简单。首先先找出想要求的目标的范围(最大值和最小值),然后利用二分法,对中间的数不断进行尝试,看看所测试的答案是否满满足或不满足前提(或者标准),不断逼近正确的答案。例题分析:给你一个数n。然后一个数m,n代表有多少个可以用两块砖的学生,m代表有多少个可以用三...原创 2018-06-21 13:05:32 · 138 阅读 · 0 评论 -
English
作文:1.首先: first of all in the first place to begin/start with above all first and foremost2.另外,而且 besides what's moremoreoverIn addition furthermorewhat's more impor...原创 2018-06-22 21:42:06 · 1370 阅读 · 0 评论 -
顺序容器的使用细节
1.vector<node>Q 的排序是咋样的#include<bits/stdc++.h>using namespace std;struct node{ int a,b; node(int a1,int b1):a(a1),b(b1){} friend bool operator < (node A,node B){ ...原创 2018-06-01 14:55:11 · 280 阅读 · 0 评论 -
KMP
首先来写最大公共前缀和后缀,这里pa代表要找的字符串,p表示pa字符串里的每个位置的最大公共前缀和后缀表#include<bits/stdc++.h>using namespace std;void pp(char pa[],int p[],int n){ p[0]=0; int len =0; int i=1; while(i<n) ...原创 2018-06-08 20:02:40 · 2242 阅读 · 2 评论 -
博弈
Problem Description十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫《勇敢者的游戏》(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻。今天,大家选择上机考试,就是一种勇敢(brave)的选择;这个短学期,我们讲的是博弈(game)专题;所以,大家现在玩的也是“勇敢者的游戏”,这也是我命名这个题目的原因。当然,除了“勇敢”,...原创 2018-06-09 11:49:55 · 327 阅读 · 0 评论 -
拓补排序
描述由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来。小Ho:小Hi,你这学期有选什么课么?小Hi:挺多的,比如XXX1,XXX2还有XXX3。本来想选YYY2的,但是好像没有先选过YYY1,不能选YYY2。小Ho:先修课程真是个麻烦的东西呢。小Hi:没错呢。好多课程都有先修课程,每次选课之前都得先查查有没有先修。教务公布的先修课程记录都是好多年前的,不但有重复的信息,好像很多都不正确...原创 2018-06-16 20:04:14 · 499 阅读 · 0 评论 -
位运算符
运算符含义说明例子&按位与把参与运算的俩个数对应的二进制位相与,只有对应的二进制均为1时,结果的对应位才为1,否则为09&5中的9可以写成(00001001),5可以写成(00000101),那么9&5的运算结果为(00000001)输出结果为1 知道:与1的是本身,与0的都是0|按位或把参与运算的俩个数对应的二进制位相或,也就是只要对应的俩个二进制位有一个1时,其结...原创 2018-06-30 23:46:07 · 187 阅读 · 0 评论 -
分治算法
所谓的分治就是指分而治之,即将较大规模的问题分解成几个较小规模的问题,通过对较小规模问题的求解达到对整个问题的求解。当我们将问题分解成俩个较小问题求解的分治方法称之为二分法三分法同样是这样对于二分法:注意:一定要是有顺序的,可判断的例子:给一个长度n的单调递增的正整数序列,即序列中每一个数都比前一个数大,有m个询问,每次询问一个x,问序列中最后一个小于等于x的数是什么?5 3 1 2 3 4 65...原创 2018-07-08 16:27:02 · 371 阅读 · 0 评论