算法设计与分析程序题
算法作业
水沝淼㵘&火炏焱燚
这个作者很懒,什么都没留下…
展开
-
列出连通集
列出连通集给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N?1编号。进行搜索时,假设我们总是从最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。输出格式:随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。按照"{ v1 v2…vk}"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。输入样例:``8 60 70 12 04 12原创 2021-05-22 11:15:39 · 353 阅读 · 0 评论 -
7-17 maximum number in a unimodal array (25 分)
7-17 maximum number in a unimodal array (25 分)You are a given a unimodal array of n distinct elements, meaning that its entries are in increasing order up until its maximum element, after which its elements are in decreasing order. Give an algorithm to co原创 2021-10-01 16:52:27 · 271 阅读 · 0 评论 -
2(8) 两个有序序列的中位数 (20 分)
已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第⌊(N+1)/2⌋个数(A0为第1个数)。输入格式:输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。输出格式:在一行中输出两个输入序列的并集序列的中位数。输入样例1:51 3 5 7 92 3 4 5 6结尾无空行输出原创 2022-01-05 17:36:15 · 632 阅读 · 0 评论 -
2(7) 改写二分搜索算法 (20 分)
题目来源:《计算机算法设计与分析》,王晓东设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。输入格式:输入有两行:第一行是n值和x值; 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。输出格式:输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数组中时,i和j相同。 提示:若x小于全部数值,则输出:-1 0 若x大于全原创 2022-01-05 16:56:30 · 216 阅读 · 0 评论 -
2(6) 二分查找 (20 分)
输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。输入格式:输入共三行: 第一行是n值; 第二行是n个整数; 第三行是x值。输出格式:输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。输入样例:41 2 3 41结尾无空行输出样例:02结尾无空行#include <iostream>using namespace原创 2022-01-05 16:21:43 · 552 阅读 · 0 评论 -
2(5) 派 (15 分)
我的生日要到了!根据习俗,我需要将一些派分给大家。我有N个不同口味、不同大小的派。有F个朋友会来参加我的派对,每个人会拿到一块派(必须一个派的一块,不能由几个派的小块拼成;可以是一整个派)。我的朋友们都特别小气,如果有人拿到更大的一块,就会开始抱怨。因此所有人拿到的派是同样大小的(但不需要是同样形状的),虽然这样有些派会被浪费,但总比搞砸整个派对好。当然,我也要给自己留一块,而这一块也要和其他人的同样大小。请问我们每个人拿到的派最大是多少?每个派都是一个高为1,半径不等的圆柱体。输入格式:第一行包含原创 2022-01-05 15:42:08 · 75 阅读 · 0 评论 -
2(4) 二分法求函数的零点 (25 分)
有函数:已知f(1.5)>0,f(2.4)<0 且方程f(x)=0 在区间[1.5,2.4] 有且只有一个根,请用二分法求出该根。 提示:判断函数是否为0,使用表达式 fabs(f(x)) < 1e-7输入格式:无。输出格式:x该方程在区间[1.5,2.4]中的根。要求四舍五入到小数点后6位。。输入样例:无结尾无空行输出样例:无结尾无空行注释:在math.h里面定义的pow()函数。调用方法为pow(底数,指数); 底数、指数、返回值都是double型的。如计算 9原创 2022-01-05 15:26:12 · 280 阅读 · 0 评论 -
2(3) 找第k小的数 (30 分)
设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。提示:函数int partition(int a[],int left,int right)的功能是根据a[left]a[right]中的某个元素x(如a[left])对a[left]a[right]进行划分,划分后的x所在位置的左段全小于等于x,右段全大于等于x,同时利用x所在的位置还可以计算出x是这批数据按升非降序排列的第几个数。因此可以编制int find(int a[],int left,int原创 2022-01-05 14:39:30 · 76 阅读 · 0 评论 -
2(2) 求逆序对数目 (25 分)
注意:本问题算法的时间复杂度要求为O(nlogn), 否则得分无效题目来源:http://poj.org/problem?id=1804 Background Raymond Babbitt drives his brother Charlie mad. Recently Raymond counted 246 toothpicks spilled all over the floor in an instant just by glancing at them. And he can even coun原创 2022-01-05 13:45:08 · 396 阅读 · 0 评论 -
2(1) maximum number in a unimodal array
标题2(1) maximum number in a unimodal array (25 分)You are a given a unimodal array of n distinct elements, meaning that its entries are in increasing order up until its maximum element, after which its elements are in decreasing order. Give an algorithm to原创 2022-01-05 12:18:22 · 592 阅读 · 0 评论 -
求最大值及其下标C++
1(1) 求最大值及其下标 (20 分)本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。输入格式:输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。输出格式:在一行中输出最大值及最大值的最小下标,中间用一个空格分开。输入样例:62 8 10 1 9 10结尾无空行输出样例:10 2#include <iostream>using namespace std;int main(){ int n,原创 2021-12-30 19:56:03 · 1031 阅读 · 0 评论