【算法第二章上机实践报告】教程文章相关的互联网学习教程文章

算法第二章上机实践报告【代码】

题目: 最大子列和问题 问题描述: 给定K个整数组成的序列{ N?1??, N?2??, ..., N?K?? },“连续子列”被定义为{ N?i??, N?i+1??, ..., N?j?? },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。 本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点...

算法第二章上机实践报告【代码】

实践题目:寻找第k小的数 寻找第k小的数设计一个平均时间为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,in...

算法第二章上机实验报告

1. 实践题目名称 找第k小的数 2. 问题描述设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。 输入有两行:第一行是n和k,0<k<=n<=10000,第二行是n个整数输出结果为第k小的数输入样例:在这里给出一组输入。例如:10 42 8 9 0 1 3 6 7 8 2输出样例:在这里给出相应的输出。例如:2 3. 算法描述int partition(int a[], int left, int right){//将数组a的第left到right个元素进行划分int x = a[left];whil...

算法第二章上机实践报告

1. 实践题目名称:找第k小的数 2. 问题描述:输入k和一个数组,输出数组中第k小的数,且算法时间复杂度为O(n) 3. 算法描述:由 int Partition(int a[], int left, int right) 、int Find(int a[], int left, int right, int k) 、int main() 三部分组成 (1)int Partition(int a[], int left, int right) Partition函数的功能是将输入的数组进行排序,使得排序后数组在我们所选取基准左边的数都小于基准,在所选...

算法第二章上机实践报告

1、实践题目名称:找到第k小的数 2、问题描述:设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。 3、算法描述: (1)int partition(int a[],int p,int r) 用函数partition来根据给定下标为p的元素大小对a[p]到a[r]进行划分,从a[p]往右找起直到找到一个数组元素比a[p]大,然后从a[r]往左找起直到找到一个数组元素比a[p]小,然后判断这两个元素的下标i和j,i是否小于j,若是,则将这两个元素交换,并重...

算法第二章上机实践报告

1.实践题目名称:找第k小的数。 2.问题描述:设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。 3.算法描述:由函数int partition(int a[],int left,int right)、int find(int a[],int left,int right,int k) 和 int main() 构成。 (1)函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个元素x( 如a[left] ) 对a[left]~a[right]进行划分,划分后的x所在位置的左段全...

算法第二章上机实验报告

1. 实践题目名称: 找第k小的数 2. 问题描述:输入一组数组,和k,求该数组中第k小的数并输出 3. 算法描述:主要由三个函数: I.Swap函数(利用中间变量t对调数组中的两个元素) II.Part函数(用数组中的某个数将数组分为两半,并返回该数字在排好序后在数组中的下标j) { int x=a[left]; int i=left,j=right+1; while(true){ while(a[++i]<x&&i<right); ...

解题报告 一维数组 贪心算法【图】

题目核心代码流程图遇到的困难及解决办法 最开始考虑这道题的时候是想将s数组里的数慢慢相加 每当和>=100时 便清零并且重新设置一个容量为100的箱子 继续存储 结果编译起来十分困难。 后来逆向思维 先构造一定数量的容量均为100的一维数组box[] 然后存放 用容量减去s数组里的元素 每当容量即将<=0时 便开始使用下一个box中的元素进行计算。 面对思路较为清晰 但编译较为麻烦时 可以逆转思维 减少编译时遇到的困难。

算法第四章上机实践报告【代码】

引论:相比与动态规划算法,贪心算法是比较容易理解的,其思想就在于得到当前状态下局部最好选择,当一个问题的最优解包含其子问题的最优解时,即每个贪心选择都是子问题的最优解,那么就能的到该问题的最优解了。本次上机实践的题目虽然不是特别难,但相比前两次,这一次上机实践的效率远低于上两次,因为在实践的时候被第二题难住了,就没有去思考第三题,导致进度大大落后。既然如此,那么本篇博客就以第三题为例来讲解贪心算法...

《算法设计与分析》--第四章上机实践报告【代码】【图】

实践题目:4-1程序存储问题 问题描述: 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。 输入格式: 第一行是2 个正整数,分别表示文件个数n和磁带的长度L。接下来的1行中,有n个正整数,表示程序存放在...

算法第四章上机实践报告

1.实践题目:程序存储问题 2.问题描述:设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。 3.算法描述:因为要尽可能装在更多的程序,所以贪心算法的选择基准为程序在磁带上的长度,优先选择长度短的程序。 ①贪心...

算法第四章实践报告

这次的实践是第四章贪心算法的实践题目。 问题描述:4-1?程序存储问题?(90?分)?设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。 输入格式: 第一行是2 个正整数,分别表示文件个数n和磁带的长度L。接下来的1行中...

算法第四章上机实践报告

实践题目 程序存储 问题描述 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。 算法描述 贪心选择性质 设程序已经参照长度从小到大排序,(x1, x2, ..., xn)是程序储存问题的一个最优解,设k = min(1<=i<=n) {i...

算法第四章上机实践报告【代码】【图】

一、实践题目 二、问题描述 (1)题目关键字:①n个程序 ②长度为L ③程序i存放在磁带上的长度是li ④磁带上最多可以存储的程序数 (2)思路:定义文件个数n、磁带长度L和n个程序存放在磁带上的长度,按照题目要求输入文件个数n和磁带长度L,然后开辟数组存储空间,将数组内的元素全部初始化为1000(以便后续用sort算法排序后前n个元素仍是题目提及的n个程序),并根据文件个数逐个输入程序存放在磁带上的长度。初始化最多可以存储...

算法第四章上机实践报告

1.实践题目:4-2删数问题 2.问题描述给定一串数字和删去位数n,设计算法找出原串删去n位后剩下数字组成新数最小的删数方案输出要求 删除新数的前导0 全0时输出0 3.算法描述数字串原长len位,删去n位因此目标数位长len-n位定义两个指针start,end,每次在原数组arr[start,end]范围内取最小值作为目标数的第1,2,..len-n位初始时start=0,end=n;因为第一次(找目标数最高位)的过程要保证后面至少有len-n-1个数字作为目标数的[2,len-n]位...