![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法训练
文章平均质量分 74
记录各种算法的训练包括后继紫书的学习
czyaaa.
这个作者很懒,什么都没留下…
展开
-
紫书第四章 函数和递归
文章目录古老的密码(uva1339)刽子手游戏(uva489)古老的密码(uva1339)#include <bits/stdc++.h>#define LOCALusing namespace std;int main(){ char s1[110]; char s2[110]; int c1[150],c2[150]; #ifdef LOCAL freopen("data.in","r",stdin); #endif //原创 2021-08-11 23:48:54 · 203 阅读 · 0 评论 -
排序算法(冒泡、选择、直插、希尔、堆、归并、快排)
文章目录简单排序冒泡排序选择排序直接插入排序希尔排序堆排序简单排序#include <stdio.h>#include <stdlib.h>#define MAXN 10void swap(int a[],int i,int j){ int t = a[i]; a[i] = a[j]; a[j] = t;}int main(){ int num[MAXN] = {9,1,5,8,3,7,4,6,2,10}; for(in原创 2021-08-03 15:34:19 · 227 阅读 · 0 评论 -
紫书第三章 字符串与字符(例题与习题)
字符串与字符常用函数:char *strcat(char *s1,const char *s2); //把s2拷贝到s1尾部char *strncat(char *s1,const char *s2,int n); //拷贝n个s2的字符到s1的尾部char *strstr(const char *s1,const char *s2); //返回s1字符串中s2字符串第一次出现的位置,找不到返回nullchar *strchr(const char *s1,int s); //返回字符串中s第一次出原创 2021-07-19 23:44:56 · 339 阅读 · 0 评论 -
AVL树的构建
左子树平衡右子树平衡#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#define LH 1#define EH 0#define RH -1typedef struct tree{ int bf; int data; struct tree *left; struct tree *right;}TreeNode,*BiTree;void L_R原创 2021-07-15 21:12:13 · 215 阅读 · 0 评论 -
查找——顺序、折半、插值、斐波那契与二叉树
顺序查找法从头到尾简单的查找,可以利用哨兵进行改进利用哨兵避免了if判断语句,加快了速度。普通顺序查找法int seq_search(int a[],int n,int key){ for(int i = 1 ; i <= n ; i++) if(a[i] == key) return i; return 0;}哨兵改进int seq_search(int a[],int n,int key){ a[0] = key;原创 2021-07-11 14:31:35 · 139 阅读 · 0 评论 -
AcWing第五次周赛
3726 调整数组原题链接:https://www.acwing.com/problem/content/3729/给定一个长度为 n 的数组 a1,a2,…,an。每次操作可以使其中任意一个元素的值增加 2。请问,是否可以通过若干次操作使得数组中所有元素的值都相等。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含整数 n。第二行包含 n 个整数 a1,a2,…,an。输出格式每组数据输出一行结果,能使得数组中所有元素的值都相等则输出 YES,否则输出 NO。数原创 2021-06-27 10:34:14 · 134 阅读 · 0 评论 -
AcWing第四次周赛
3694 A还是B原题地址:https://www.acwing.com/problem/content/3697/给定一个长度为 n 的字符串,字符串中只包含字母 A 和 B。请问,哪个字母在字符串中出现的次数更多?输入格式第一行包含一个整数 n。第二行包含一个长度为 n 的字符串,字符串中只包含大写字母 A 和 B(也可能只包含 A 或只包含 B)。输出格式如果字母 A 出现的次数更多,则输出 A。如果字母 B 出现的次数更多,则输出 B。如果出现的次数一样多,则输出 T。数据范围原创 2021-06-27 08:16:14 · 241 阅读 · 0 评论 -
邻接表、十字邻链表、拓扑排序(AOV图)与关键路径(AOE图)
#include <stdio.h>#include <stdlib.h>#define MAXN 1000typedef struct EdgeNode{ int weight; int adjvex; struct EdgeNode *next;}EdgeNode;typedef struct VexNode{ //data可存储该结点信息 EdgeNode *firstEdge;}AdjList[MAXN];type原创 2021-06-12 09:42:24 · 862 阅读 · 1 评论 -
树状数组与线段树
这里写自定义目录标题树状数组含义与原理线段树实现,累加与改变数值树状数组含义与原理与部分位置和的一种方法,拥有前缀和快速取得结果的特点(O(2logn)),也拥有普通枚举快速修改的优势(O(logn))。以数组的形式模仿树,一般用于维护前缀和,算法复杂度与线段树相同,但由于是数组,且线段树保存的是区间,面对过大的数据,无法解决,故树状数组能解决的问题线段树也能,线段树能解决的问题,树状数组不一定可以。以这张图为例:A数组为原始数组 C数组为树状数组。C【i】=A【i-2^k+1】+A【i-2原创 2021-06-09 19:17:31 · 237 阅读 · 1 评论 -
分治法练习
这里写自定义目录标题分治法含义分治法练习分治法练习1:循坏赛日程安排问题分治法练习2:棋盘覆盖问题(待更)分治法含义分治法,字面意思是“分而治之”,就是把一个复杂的1问题分成两个或多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并,这个思想是很多高效算法的基础,例如排序算法(快速排序,归并排序),傅里叶变换(快速傅里叶变换)等。分治法的基本思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治策略:对原创 2021-06-07 22:25:52 · 759 阅读 · 0 评论