![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言基础算法
分享一些c语言基础算法来优化代码
Xiao--Ming
来自烟台大学计算机专业的一名学生。
展开
-
最长公共子序列
【问题描述】 一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=,则另一序列Z=是X的子序列是指存在一个严格递增的下标序列,使得对于所有j=1,2,…,k有: Xij=Zj例如,序列z=是序列X=的子序列,相应的递增下标序列为。【样例输入】ABCBDAB BDCABA【样例输出】 4 BCBA参考解答:原创 2022-06-01 15:14:29 · 150 阅读 · 0 评论 -
问题:拦截导弹
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。样例:INPUT原创 2022-06-01 15:11:37 · 173 阅读 · 0 评论 -
YTU——问题 : 哈希查找2
根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。输入输入数据第一行为两个正整数N(N <= 1000)和p(p 为大于等于 N的最小素数),N是关键字总数,p是hash表长度,第2行给出N个正整数关键字,数字间以空格间隔。输出输出每个关键字在hash表中的位置,以空格间隔。注意最后一个数字后面不要有空格。输入输出输入 #5 524 ..原创 2022-05-22 11:31:01 · 268 阅读 · 0 评论 -
YTU——问题 : 哈希查找1
题目描述题目描述有一个数据字典,里面存有n个不同数字(n<=100000),以哈希函数为f(x)=x+1存在数据字典中。小明现在接到一个任务,这项任务看起来非常简单——给定m个数字,分别查询这m个数字是否出现在字典之中;但是考虑到你是个优秀的程序员,如果查询的数存在表中你不仅要告诉小明数据存在还得贴心的告诉小明他查询的数的在数据字典中的下标(下标从2开始到n+1)。若查询的数不存在,则返回-1;输入第一行包含两个整数nm,分别代表字典中数字的个数和要查询的数字的个数。接着n个数...原创 2022-05-22 11:29:10 · 187 阅读 · 0 评论 -
皇后问题——递归法
参考:#include <stdio.h>#include <math.h>#include <malloc.h>void nQueens(int* x, int n, int k); /*求解n皇后问题*/int place(int* x, int k); /*判断是否可以在第k行第x[k]列摆放皇后*/void printSolution(int* x, int n); /*输出求解结果*/int main(){原创 2022-04-13 15:25:35 · 230 阅读 · 0 评论 -
N皇后问题
参考:#include <stdio.h>#include <math.h>#include <malloc.h>void nQueens(int* x, int n); /*求解n皇后问题*/int place(int* x, int k); /*判断是否可以在第k行第x[k]列摆放皇后*/void printSolution(int* x, int n); /*输出求解结果*/int main(){ int n原创 2022-04-13 14:50:29 · 99 阅读 · 0 评论 -
快速排序法
#include <stdio.h>void quicksort(int data[],int first,int last){ int i, j, t, base; if (first>last) return; base=data[first]; /* 用首元素作为基数 */ i=first; j=last; while(i!=j) /* 重复下面的.原创 2022-04-06 16:30:59 · 235 阅读 · 0 评论 -
哈希查找算法
#include <stdio.h>#define N 13 /* N取素数 */void insert_hash(int h[], int len, int key);int search_hash(int h[], int len, int key);int main(){ int data[N] = { 0 }; /* 本例中数组中要存储的均为正数,初始化为全0表示值为空 */ int key; /* 待查关键字 */ int .原创 2022-04-06 15:32:48 · 969 阅读 · 1 评论 -
二分法查找
#include<stdio.h>int binary_search(int arr[], int n, int key){ int index = -1; /* 如果在查找过程中,i没有被重新赋值,返回的就是这个初值-1了 */ int first = 0, last = n - 1, mid; /* 定义控制查找范围的变量并赋初值 */ while (first <= last) { mid = (first + last) / 2; /* 取中间位置 *.原创 2022-04-06 14:49:05 · 109 阅读 · 0 评论