C语言算法
浪里小黑狼
张识虔
展开
-
基于树的查找
二叉排序树创建二叉树,并将数据插入到结点中。程序执行后会将原数据进行从小到大排序,并输出排序结果//定义数组source,并设置数组里面的数据。然后定义函数InsertBST(),用于在二叉树排序插入关键字key。首先查找要插入数据的父结点,然后根据插入数据的key于父结点值的大小,决定将结点插入到父结点的左子树还是右子树。#include<stdio.h>#inclu...原创 2018-07-18 23:37:01 · 161 阅读 · 0 评论 -
贪心算法作业
桂 林 理 工 大 学实 验 报 告班级 软件工程16-1班 学号 3162052051116 姓名 张识虔 同组实验者 实验名称 贪心算法 日期 2018年 11 月1 日 一、实验目的:理解贪心算法的思想,并能对给定的问题能设计出分治算法予以解决。 ...原创 2018-11-04 23:02:35 · 613 阅读 · 0 评论 -
数字三角形 计算最大路径 动态规划
以所经过的权值之和最大值为例进行说明。行进的过程中,每次只有两种选择:向左或向右。一个有n层的数字三角形的完整路径有2n条,所以当n比较大的时候,搜索全部路径,从中找出最大值,效率较低。采用动态规划方法实现。用d(i,j)表示从位置(i,j)出发时得到的最大值(包括位置(i,j)本身),可以写出最大值的递归方程: 由于递归方程中包含了重复子问题,直接采用递归方程求解, 效率较低...原创 2018-10-27 14:43:41 · 1735 阅读 · 3 评论 -
最大字段和 动态规划
最大子段和给定由n个整数(可能有负整数)组成的序列(a1,a2,…,an),最大子段和问题要求该序列形如 的最大值(1<=i<=j<=n),当序列中所有整数均为负整数时,其最大子段和为0。#include<stdio.h>#include<string.h>#define N 100int MaxSum(int n,int a[]){ i...原创 2018-10-20 22:29:45 · 748 阅读 · 0 评论 -
最长公共子序列问题动态规划
最长公共子序列问题:若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时...原创 2018-10-19 22:06:07 · 535 阅读 · 0 评论 -
算法分析 算法设计基础
实验一 算法设计基础 一.实验目的理解蛮力法的思想及程序的执行过程;理解递推算法的思想;能较熟练地编写枚举、递推程序,对给定的问题能设计出相应算法予以解决。 二.实验基本步骤1. 选定实验题目,仔细阅读实验要求,设计好输入输出,按照分治法的思想构思算法,选取合适的存储结构实现应用的操作。2. 设计的结果应在Visual C++ 实验环境下实现并进行调试。(也可使...原创 2018-10-09 22:17:28 · 260 阅读 · 0 评论 -
Fibonacci数列练习题
以下练习题 出自此网页 http://cpp.zjut.edu.cn/ProblemList.aspx1090 菲波那契数的余数 Time Limit:1000MS Memory Limit:32768KDescription:菲波那契数大家可能都已经很熟悉了: f(1)=0; f(2)=1; f(n)=f(n-1)+f(n-2) n>2。 因此,当需要其除以某个数的余数时...原创 2018-10-14 22:15:39 · 1104 阅读 · 1 评论 -
算法分析 递归与分治
1. Fibonacci数列 无穷数列1,1,2,3,5,8,13,21,34,55,……,称为Fibonacci数列。它可以递归地定义为:第n个Fibonacci数可递归地计算如下:int fibonacci(int n) { if (n <= 1) return 1; return fibonacci(n-1)+fibonac...原创 2018-10-13 22:24:33 · 254 阅读 · 0 评论 -
算法的经典问题1
银行定期存款有3月期,半年期,一年期,2年期,3年期,5年期等多种,不同存期的年利水平是不同的。0.36 期限=活期 1.71 期限=3个月 1.98 期限=6个月 2.25 期限=1年2.79 期限=2年 3.33 期限=3年 3.60 ...原创 2018-10-02 22:47:26 · 297 阅读 · 0 评论 -
内部排序
直接插入排序CreateData.c 创建随机数组#include<stdlib.h>#include<time.h>int CreateData(int arr[],int n,int min,int max)//创建一个随机数组,a保存胜出的数据,n为数组元素的数量{ int i,j,flag; srand(time(NULL)); if((ma...原创 2018-08-12 23:15:53 · 189 阅读 · 0 评论 -
算法在数学中应用2
回文素数回文素数是指,对一个整数n从左向右和从右向左读其结果值相同且是素数,即称n为回文素数。通过3个循环变量分别表示1000以内的数百位,十位,个位,由这3个组成一个数,再按照倒序组成一个数。如果两个数相等,则表示该数是一个回文数,再判断该数是否为素数,最后输出找到的数#include<stdio.h>#define MAXNUM 1000 //寻找回文数的...原创 2018-09-07 21:45:51 · 255 阅读 · 0 评论 -
算法在数学中应用1
计算两个正整数得最大公约数和最公倍数#include<stdio.h>int gcd(int a,int b) //最大公约数{ int min; if(a<=0||b<=0) //是负数就退出程序 return -1; if(a>b) min=b; //将a,b中较小的赋值给min else min=a; w...原创 2018-08-17 22:25:55 · 527 阅读 · 0 评论 -
基于线性表的查找
顺序查找法#include<stdio.h>#define ARRAYLEN 8int source[]={ 69,65,90,37,92,6,28,54};int SeqSearch(int s[],int n,int key){ int i; for(i=0;i<n&&s[i]!=key;i++); //循环查找关键字 空循环 i...原创 2018-07-15 19:53:40 · 157 阅读 · 0 评论 -
计算时查找法------散列法
散列表的查找过程 #define m<散列表长度>#define NULLKEY<代表空记录的关键字值>typedef int KeyType;typedef struct{ KeyType key;}RecordType;typedef RecordType HashTable[m];int HashSearch(HashTable ht,Ke...原创 2018-07-19 21:05:22 · 141 阅读 · 0 评论 -
回溯法算法实验
桂 林 理 工 大 学实 验 报 告班级 软件工程16-1班 学号 3162052051116 姓名 张识虔 同组实验者 实验名称 回溯法 日期 2018年 11 月14 日 一、实验目的与要求:1、通过回溯法的示例程序理解回溯法的基本思想;2、运用回溯法解决实际问题进一...原创 2018-11-17 10:53:09 · 1317 阅读 · 0 评论