随笔分类 - 数据结构与算法
呵呵 慢慢学吧
摘要:之前用过char*,int。见字符串处理 - 完全感覚Dreamer - 博客园 (cnblogs.com) 这次用string,里面用到了reverse函数比较方便。 #include <bits/stdc++.h> using namespace std; void add(string a,s
阅读全文
摘要:一串数字,每两位一组,不够补0,加上32,放到新的字符串里,比如123456,12+32=44,34+32=66,56+32=88 #include <bits/stdc++.h> using namespace std; char str[101]={'\0'}; char res[101]={'
阅读全文
摘要:输出所有4位超级素数:前1位,前2位,前3位,前4位全是素数。 #include <bits/stdc++.h> using namespace std; bool isPrime(int a){ if(a<=1) return false; int sqr=(int)sqrt(1.0*a); fo
阅读全文
摘要:输入一个四行五列的矩阵,找出每列最大的两个数。 输入描述: 每个用例包含四行,每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。 输出描述: 可能有多组测试数据,对于每组数据,按照样例输出的格式将每列最大的两个数输出,如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那
阅读全文
摘要:打印倒三角 #include <bits/stdc++.h> using namespace std; char c; void print(int times){ char start = c - times; for(int i=0;i<=times;i++){ for(int j=0;j<2*
阅读全文
摘要:考前挣扎一下 #include <bits/stdc++.h> using namespace std; const int maxn=10010; map<int,int> mp,index_k,height; int m,n,pre[maxn],in[maxn]; void build(int
阅读全文
摘要:题目:https://pintia.cn/problem-sets/16/problems/671 给定N个字符,每个字符有一个使用频率,要对每个字符进行编码,有M个学生对作业进行了提交,编程判断他们的答案是不是最优编码。我们知道,霍夫曼编码一定是最优的编码方案,但是题目告诉我们:一个最优的编码方案
阅读全文
摘要:题目:https://pintia.cn/problem-sets/16/problems/669 完全二叉搜索树=完全二叉树+二叉搜索树。从树的形状上来看,一定是从上至下、从左至右摆满的。而树的插入跟输入顺序一点关系也没有,题目中说明了:给定一组输入数据,有唯一的完全二叉搜索树与之对应。 测试样例
阅读全文
摘要:插入(二叉搜索树性质是左子树全小,右子树全大): BinTree Insert(BinTree BST, ElementType X) { BinTree p = BST; if (!p) { BST = (BinTree)malloc(sizeof(struct TNode)); BST->Dat
阅读全文
摘要:题目链接:https://pintia.cn/problem-sets/16/problems/664 建立一个最大100000的结构数组,模拟链表,两个域,数据域和指针域。 依次输入地址、值、下一个结点地址。 如输入N个结点,每K个结点进行逆序,少于K的不做处理。 注意:测试时输入可能有不在链表里
阅读全文
摘要:题目链接:https://pintia.cn/problem-sets/15/problems/712 1.分别建立两棵二叉搜索树 建立: Tree Initial(int N) { Tree T= (Tree)malloc(sizeof(struct TreeNode) * (N)); scanf
阅读全文
摘要:题目要求:按照从上至下,从左至右(层序)的顺序输出二叉树的叶子结点。 思路:利用队列,保存每一个结点。 先将根入队,然后将根出队,访问根结点。将根结点的儿子结点入队,后面的结点依次执行此操作,这样所有的结点都可以被访问。 队列的定义及入队出队操作如下: typedef struct Queue* S
阅读全文
摘要:同构的定义:给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。 更加具体的理解为:两棵树中的每两个对应结点的孩子必须相同,左右位置可不一样。 树的存储结构:结构数组。链表在对输入进行存储时没有数组方便。 如:输入如下样例后结构数组内容 8 A 1 2 B
阅读全文
摘要:非递归实现 代码: Position BinarySearch(List L, ElementType X) { Position mid,start, end; start = 1; end = L->Last; mid = (1 + L->Last) / 2; // if (X == L->Da
阅读全文
摘要:问题描述:给定一个栈,最多可存放M个元素,现要将N个数(1-N),随机入栈、出栈,入栈顺序由小到大,判断一个给定的序列是否合法。 思路:要依次判断序列中的每一个数,判定为不合法的情况有: 当前栈顶元素比该数大。因为目前处理的数还未出栈,并且一定比栈顶元素先入栈,而栈顶元素还未出栈,则该数不可能出栈成
阅读全文
摘要:1.递归 该方法由书上提供,比较好理解:给定一个数组,从中间划分成两个数组[1,mid],[mid+1,end];最大子序列可分为三种情况: a.位于左半边 b.位于右半边 c.跨越两边 求两边最大子序列时可递归求解,求跨越两边的子序列时分别从mid、mid+1出发,求得left_sum和right
阅读全文