
数据结构和算法
数据结构和算法
叫我天真(接辅导)
这个作者很懒,什么都没留下…
展开
-
算法题目练习010:将数组中的数奇偶分化并排序
将数组中所有偶数按从小到大的顺序存放在数组前半部,将所有奇数按从小到大的顺序存放在数组的后半部#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int jiou(int *a, int n){ int x=0, y=n-1; int t; while(x<y){ while(a[x]%2 == 0) x++; while(.原创 2022-03-07 15:01:40 · 218 阅读 · 0 评论 -
算法题目联系009:成绩排序1
输入用户名和成绩,将成绩按照给出的0或1,判断由高到低排序或由低到高排序,相同成绩都按先录入者排序在前的规则处理input/output:#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;struct Student{ string name; int score;}; bool comp1(Student a, Student b){ .原创 2022-03-05 20:34:38 · 165 阅读 · 0 评论 -
算法题目练习008:成绩排序(排序函数sort(first, last,comp)的使用)
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);sort函数:第一个参数为要排序的起始位置,如果是数组,就是数组的起始地址 第二个参数为要排序的结束位置, 如果是数组,就是数组起始地址+数组结点个数,并非按照地址计算(不需要*4, 下面举例说明)第三个参数为一个函数,可以直接不写,那么为默认按升序排列,如果写此参数,需自行定义一个函数,该函数格式为retu...原创 2022-03-05 12:35:32 · 918 阅读 · 0 评论 -
算法题目练习007:打印日期
给出年份y和一年中的第n天, 算出第n天时几月几号输入输出: #include<stdio.h> int IsLeapYear(int y){ if((y%4==0 && y%100 != 0) || (y%400 == 0)) return 1; else return 0;} int main(){ int day[2][13]={{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, .原创 2022-03-03 18:28:47 · 149 阅读 · 0 评论 -
算法题目练习006:叠框
把一个个大小差一圈的筐叠上去,使得从上往下看时, 边筐花色交错input:11 B A5 @ Woutput:#include<stdio.h>#include<string.h>int main(){ int n; char x, y, q, w; while( scanf("%d%c%c%c%c", &n,&q, &x, &w, &y) != EOF){ //可以一直输入,scanf返回值为成功赋予变量的个原创 2022-03-03 14:08:06 · 258 阅读 · 0 评论 -
算法题目练习005:输出梯形
输出高度h,输出一个高度为h、上底边长度为h的梯形, 要求同样例输出一样规则input:一个整数h(1<=h<=1000)output:h所对应的梯形样例输入:4样例输出:#include<stdio.h>int star(int h, int i){ for(int j=0; j<(2*(h-1)-i*2); j++) printf(" "); for(int k=0; k<(h+i*2); k++) printf("*"); p原创 2022-03-03 09:37:16 · 484 阅读 · 0 评论 -
算法题目练习004:对称平方数
打印所有不超过256,其平方具有对称性质的数。如2和11就是这样的数Input:无output:输出具有题目要求的数,如果输出数据不止一组,回车隔开,(答案在下方截图)此题另一解法为判断该数的平方是否为反序数,时间复杂度会更低//求0-256平方是否为对称数 //此题另一解法:该数平方得反序数等于该数 #include<stdio.h>int count(int x){ int num = 0; if(x==0) return 1; while(x!=0){原创 2022-03-02 19:21:16 · 250 阅读 · 0 评论 -
算法题目练习003:消除类游戏
时间复杂度位n^2较高,暂时还未做出时间复杂度低的好办法问题描述消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。请注意:一个棋子可能在某一行和某一列同时被消除。输入格式输入的第一行包含两个整数n, m,用空格分原创 2021-02-25 11:20:11 · 901 阅读 · 0 评论 -
算法题目练习002:数字排序
问题描述 给定n个整数,请计算每个整数各位数字和,按各位数字和从大到小的顺序输出。输入格式 输入的第一行包含一个整数n,表示给定数字的个数。 第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。输出格式 输出多行,每行包含两个整数,分别表示一个给定的整数和它的各位数字和。按各位数字和递减的顺序输出。如果两个整数各位数字和相同,则先输出值较小的,然后输出值较大的。样例输入5101 100 999 1234 110样例输出999 271234 10101 21原创 2021-02-25 11:17:15 · 1480 阅读 · 0 评论 -
算法题目练习001:数列分段
问题描述 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?输入格式 输入的第一行包含一个整数n,表示数列中整数的个数。 第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。输出格式 输出一个整数,表示给定的数列有多个段。样例输入88 8 8 0 12 12 8 0样例输出5样例说明 8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。评测用例规模与约定原创 2021-02-25 11:14:57 · 415 阅读 · 0 评论 -
C++中char型的计算与输出
引例:一个ISBN码的格式为:x-xxx-xxxxx-x(x为0-9的数字),输入时严格按照ISBN码的格式进行输入,如果(第一位数字乘1+第二位数字乘2,以此类推第九位数字乘9)%11 = 第十位数字,则控制台输出Right,否则输出正确的ISBN码,例子:0-670-82162-4为正确的码,计算过程为:(0*1+6*2+7*3+0*4+8*5+2*6+1*7+6*8+2*9)%11 == 4,满足条件输出RIGHT此题思路十分简单,我首先想到的使用int型数组,然后把-的位置空出来,不进行计.原创 2021-02-22 12:24:39 · 5898 阅读 · 0 评论 -
树及二叉树的基本知识&二叉树的创建(C++)
树的基本概念树的度:树内各结点的度的最大值结点的度:结点的子女个数树中结点数 = 总分叉数 +1。(这里的分叉数就是所有结点的度之和)分支结点:度不为0的结点叶子结点:度为0的结点二叉树的基本概念满二叉树:一颗深度为k且又2^k-1个节点的二叉树成为满二叉树。完全二叉树:(人话)最后一行可不全,但是左侧叶子节点是没有空位的。线索二叉树:在二叉树的基础上,结点结构除数据区域外,还有l(r)child、l(r)tag、四个区域,其中tag区域等于0则表示节点有(左/右)孩子,child指向孩子原创 2021-01-07 12:46:01 · 334 阅读 · 2 评论 -
链队列的C++实现
#include<iostream>using namespace std;class Point{ int x; Point *next; public : Point(); int getx(); bool setx(int x); Point *getnext(); bool setnext(Point *next);}; Point::Point(){ x = 0; next = NULL;}int Point::getx(){ ret.原创 2021-01-01 22:06:13 · 492 阅读 · 0 评论 -
顺序队列的C++实现
#include<iostream>using namespace std;class Point{ int x; public: int getx(); void setx(int x);};int Point::getx(){ return this->x;}void Point::setx(int x){ this->x = x;}class Queue{ int head; int tail; int length; int .原创 2021-01-01 22:05:34 · 417 阅读 · 0 评论 -
链栈的C++实现
#include<iostream>using namespace std;class Point{ int x; Point *next; public: Point(); int getx(); bool setx(int x); Point *getnext(); bool setnext(Point *p);};Point::Point(){ next = NULL;} int Point::getx(){ return this->.原创 2021-01-01 22:03:52 · 190 阅读 · 0 评论 -
顺序栈的C++实现
#include<iostream>using namespace std;class Point{ int x; public: int getx(); bool setx(int x); };int Point::getx(){ return this->x;}bool Point::setx(int x){ this->x = x;}class Stack{ Point *tail; Point head[100]; int l.原创 2021-01-01 22:03:03 · 528 阅读 · 1 评论 -
数据结构中算法的描述
有关树的算法有关图的算法最小生成树算法:普利姆最小生成树 克鲁斯卡尔最小生成树拓扑排序:AOV网:定点表示活动(或任务),有向边表示活动(或任务)之间的先后关系的有向图拓扑排序:把AOV网中的所有顶点拍成一个线性序列,满足若AOV网中存在边<Vi, Vj>,则在该序列中,Vi必位于Vj之前。,构造AOV网的拓扑序列的操作叫拓扑排序对于存在回路的网,就无法找到其顶点的拓扑排序拓扑排序算法思想:1.在AOV网中选择一个入度为0的顶...原创 2020-09-12 10:09:44 · 501 阅读 · 0 评论 -
折半查找的实现
折半查找又叫二分查找,适用于有序的顺序表,在有序表(eg:单调递增)中快速找到Key,将key与中间值进行比较,如果大于中间值,则要找的数据在后半部分,小于中间值,则需要的数据在前半部分,然后缩小范围继续折半查找,找到则返回该数据,找不到返回返回失败信息。#include<iostream>using namespace std;int Biniry_Search(int l[10], int key){ int low = 0, high = 10-1, mid; while(原创 2020-08-22 14:43:53 · 336 阅读 · 0 评论 -
数据结构之单链表
视频:https://www.bilibili.com/video/av83732013/线性表包括顺序表和链表两部分顺序表:用一组地址连续的存储单元一次存储线性表的数据元素(数组)链表:用一组任意的存储单元存储线性表的数据元素(存储单元可以是连续的,也可以是不连续的),对于每个数据元素除了存储本身信息外(数据域),还需存储指示其后继的信息(直接后继的存储位置)(指针域)称为结点,每个结点包...原创 2020-01-16 23:40:45 · 2187 阅读 · 4 评论