嗯呢嗯呢
Let there be peace on earth.
展开
-
归并排序(递归法)
归并排序(递归法)(10分)本题要求实现二路归并排序中的归并操作,待排序列的长度1<=n<=1000。函数接口定义:void Merge(SqList L,int low,int m,int high);其中L是待排序表,使排序后的数据从小到大排列。裁判测试程序样例:#include <iostream>#include <string.h> #include <stdio.h>#include <stdlib.h&g.原创 2021-01-16 17:09:04 · 677 阅读 · 0 评论 -
单链表的逆置
单链表的逆置。例如:输入字符串abcd,输出字符串dcbaclass Lnode{ char data; Lnode next;}public class Main { //返回带头结点的单链表L的逆转链表 public static Lnode Reverse( Lnode L ) { Lnode Old_head, New_head, Temp; New_head = null; Old_head = L.next; whil原创 2020-06-06 08:52:28 · 650 阅读 · 0 评论 -
贪心之安排活动会场问题
假设要在足够多的会场里安排一批活动,n个活动编号1~n,每个活动开始时间bI,结束时间ei,设计一个有效的贪心算法求出最少的会场个数#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define MAX 50struct Active{ int no; //活动编号 int b; //开始时间 int e; //结束时间 bool operator&原创 2020-05-20 10:11:17 · 1592 阅读 · 0 评论 -
模仿二分查找过程设计一个三分查找算法,分析其时间复杂度
#include<iostream>using namespace std;int ThSearch(int a[],int low,int high,int k){ int m1,m2; if(low<=high){ m1=low+(high-low)/3; m2=low+(high-low)*2/3; if(a[m...原创 2020-05-16 16:56:07 · 3352 阅读 · 0 评论 -
采用分治法求一个整数序列中的最大值和最小值
#include <iostream>using namespace std;void MaxMin(int a[], int l, int r, int &maxe, int &mine){ int mid; if(l == r){ //只有一个元素 maxe = a[l]; mine = a[l]; }...原创 2020-05-16 16:54:56 · 3834 阅读 · 0 评论 -
数组循环左移
习题2.2数组循环左移(20分)本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(am⋯an−1a0a1⋯am−1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽...原创 2020-04-23 09:01:03 · 274 阅读 · 0 评论 -
哈夫曼算法(最优二叉树)
算法思想每次从集合中选取两个最小和次小权值的结点作为新构造二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和,直到只有一颗二叉树构成初始集合对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F={T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空。(为方便在计算机上...原创 2020-04-17 18:57:00 · 864 阅读 · 0 评论 -
最小生成树之迪杰斯特拉算法(Dijkstra算法)之单源最短路径
贪心法算法思想1、通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。2、此外,引进两个集合S和U。S的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U则是记录还未求出最短路径的顶点(以及该顶点到起点s的距离)。3、初始时,S中只有起点s;U中是除s之外的顶点,并且U中顶点的路径是”起点s到该顶点的路径”。然后,从U中找出路径最短的...原创 2020-04-13 15:25:52 · 906 阅读 · 0 评论 -
最小生成树之普里姆算法(Prim算法)
图论中的一种算法,可在加权连通图里搜索最小生成树。由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之和亦为最小。算法描述1).输入:一个加权连通图,其中顶点集合为V,边集合为E;2).初始化:Vnew= {x},其中x为集合V中的任一节点(起始点),Enew= {},为空;3).重复下列操作,直到Vnew= V:a.在集合E中选取权值最小...原创 2020-04-13 15:04:54 · 501 阅读 · 0 评论 -
数据结构栈之火车出站小结
这周遇到此题,做个小结。解题步骤1、凝练题目1~n进入A,判断输入序列是否满足出栈规则2、解决方案添加C栈,将输入编号逐个与A中元素比较;若相同,出栈,不相同,将编号压入C栈;出站车厢数等于输入车厢数量火车出站成功,否则失败3、代码实现#include#define MAX 999int main(){ int n,i,j,k,top,A[MAX],B[MAX]原创 2017-10-24 18:20:52 · 1537 阅读 · 0 评论 -
最小生成树之克鲁斯卡尔(kruskal)算法详解代码实现
克鲁斯卡尔算法的基本思想是以边为主导地位,始终选择当前可用(所选的边不能构成回路)的最小权植边。1、给所有的边按照从小到大的顺序排序2、从小到大依次考察每一条边(u,v)<1> 设一个有n个顶点的连通网络为G(V,E),最初先构造一个只有n个顶点,没有边的非连通图T={V,空},图中每个顶点自成一格连通分量。<2> 在E中选择一条具有最小权植的边时,若该边的...原创 2020-04-12 15:51:39 · 1134 阅读 · 0 评论 -
有序数组的插入
本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序。函数接口定义:bool Insert( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZ...原创 2020-04-10 12:09:19 · 425 阅读 · 0 评论 -
二分查找
本题要求实现二分查找算法。函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position ...原创 2020-04-09 11:41:42 · 193 阅读 · 0 评论 -
PTA最大子列和问题
给定K个整数组成的序列{N1,N2, ...,NK},“连续子列”被定义为{Ni,Ni+1, ...,Nj},其中1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的...原创 2020-04-09 10:35:04 · 193 阅读 · 0 评论 -
算法及其时间复杂度
目录1、什么是算法2、算法的特性3、基本运算与输入规模4、算法的两种时间复杂度5、分析举例1、什么是算法有限条指令的序列 ,这个指令序列确定了解决某个问题的一 系列运算或操作2、算法的特性(1)有限性,能够在有限步停机(2)确定性,每步的计算是确定的(3)可行性,能够输出实例正确的解(4)输入性(5)输出性3、基本运算与输入规模算...原创 2020-03-29 17:30:04 · 261 阅读 · 0 评论 -
五类排序算法的效率
原创 2020-03-29 17:10:36 · 174 阅读 · 0 评论 -
算法分析之对问题建模
想通过算法解决问题首先要对问题进行分析今天就来看一看分析算法的几个步骤以这样一个调度问题为例,首先要进行问题建模其次选择满足要求的算法可以是一个或多个最后分析算法效率,选择效率最高的算法总结:分析思路...原创 2020-03-29 16:55:29 · 1174 阅读 · 0 评论 -
动态规划之-最大子段和
#include<stdio.h>int begin,end;int main(){ int maxSum(int n,int* a); int n,i; printf("输入序列长度\n"); scanf("%d",&n); int a[n]; printf("输入序列\n"); for(i=0;i<n;i++){ scanf("%...原创 2020-03-25 09:44:22 · 539 阅读 · 0 评论 -
动态规划之图像压缩问题
问题描述:在计算机中,常用像素点的灰度值序列{p1,p1,……pn}表示图像。其中整数pi,1<=i<=n,表示像素点i的灰度值。通常灰度值的范围是0~255。因此最多需要8位表示一个像素。压缩的原理就是把序列{p1,p1,……pn}进行设断点,将其分割成一段一段的。分段的过程就是要找出断点,让一段里面的像素的最大灰度值比较小,那么这一段像素(本来需要8位)就可以用较少的位(比...原创 2020-03-25 09:40:01 · 934 阅读 · 0 评论 -
动态规划之最长公共子序列
#include<stdio.h>int main(){ int i,j; int x_len,y_len; printf("输入序列x的长度\n"); scanf("%d",&x_len); printf("输入序列y的长度\n"); scanf("%d",&y_len); char x[x_len]; char y[y...原创 2020-03-25 09:13:36 · 207 阅读 · 0 评论 -
动态规划之背包问题
这里需要说明,之所以用上面的递推方程,是因为在上面的表达式中和都是已知的,这样就降低了算法的时间复杂度#include<stdio.h>struct M{ int v; int w;};int main(){ int k,y,t; int n,b; printf("输入物品种类数\n"); scanf("%d",&n)...原创 2020-03-25 09:02:41 · 128 阅读 · 0 评论 -
动态规划之投资问题
#include<stdio.h>struct bwl{ int sy; int fe;}; int main(){ int x; //投资金额 int n;//项目数 int i,j; printf("输入投资金额\n"); scanf("%d",&x); printf("输入项目数\n"); s...原创 2020-03-25 08:39:29 · 876 阅读 · 1 评论 -
动态规划之矩阵连乘
问题思路:/*矩阵A i行j列 ;矩阵B j行s列 AB 计算量i*j*s */ #include<stdio.h>int n;int p[100];int m[100][100]; int s[100][100];void matrixchain();void print(int i,int j);...原创 2020-03-23 10:46:51 · 280 阅读 · 0 评论 -
插入排序
问题:对一个序列从小到大排序思想:将序列分有序、无序两部分,每次将一个待排序元素插入有序部分#include<stdio.h>void insertion_sort(int *sz,int n);int main(){ int n; int i; printf("请输入要升序排序的序列个数\n"); scanf("%d",&n); int sz[...原创 2020-03-23 10:34:13 · 139 阅读 · 0 评论 -
C语言十进制转二进制
#include <stdio.h>int main(){ int transfer(int x); int face(int n); int x; printf("请输入一个十进制数:"); scanf("%d",&x); printf("转换成二进制数:%d\n",transfer(x)); printf("进阶...原创 2020-03-17 17:15:52 · 217 阅读 · 0 评论 -
c语言典例之求n个整数最大连续子序列和
C语言求最大连续子序列和问题描述输入:具有n个数的序列x输出:输入序列x的任何连续子序列中的最大和解题思路:列出所有子序列,并求出它们的和,找出其中的最大者int main(){int i,j,k,n,max,sum;scanf("%d",&n);int x[n];for(i=0;i //输入序列xscanf("%d",&x[i]);原创 2016-12-04 21:53:09 · 5895 阅读 · 1 评论