算法设计
JobinXin
这个作者很懒,什么都没留下…
展开
-
两数之和(C语言)
两数之和(C语言)给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输原创 2021-01-03 20:52:54 · 5839 阅读 · 3 评论 -
作业调度的三种算法
作业调度的三种算法一、先来先服务算法:(1)按作业到达的先后次序进行调度。总是首先调度在系统中等待时间最长的作业。它是一种非剥夺式调度算法,主要是从“公平”的角度来考虑。哪个作业先进来,就优先执行哪个作业,不会导致饥饿,但是会出现作业的带权周转时间很大。(2)代码如下:#include <stdio.h>#include <stdlib.h>#include<dos.h>#include<time.h>#include<conio.h&g原创 2020-11-20 10:52:54 · 9510 阅读 · 0 评论 -
动态规划法如何来解决最长公共子序列问题
1、最长公共子序列问题。设有两个字符序列X和Y,它们的元素分别存放在数组x[m+1]和y[n+1]中,x[0]和y[0]不放元素。公共子序列存放在数组z[]中。完成如下函数。2、int CommonOrder(int m,int n,char x[],char y[],char z[])函数功能是返回两字符序列的最长公共子序列长度值。并且公共子序列存放在数组z[]中。3、写主函数main(),实现输入数组x[]和y[],调用 CommonOrder函数,并输出公共子序列。(1)解题思路:引进一个二维数原创 2020-07-15 11:56:26 · 1638 阅读 · 0 评论 -
动态规划法如何来解决0-1背包问题
1、0-1背包问题。设有n个物品他们的重量和价值分别存放在数组w[]和v[]中,背包的容量存放在全局变量C中,和最终的n个物品是否装入情况存放在数组x[n]中。2、int KnapSack(int w[],int v[],int x[],int n)函数功能是返回能装载的最大价值。并且第i个物品能否装入背包存放在数组元素x[i]中,它为1(非0)表示该物品可以装入,为0表示该物品不装入。3、写主函数main(),实现输入数组w[]和v[],调用KnapSack函数,并输出装入物品的编号。(1)解题思路原创 2020-07-15 11:49:21 · 3137 阅读 · 0 评论 -
贪心法求活动安排问题
贪心法求活动安排问题1、设有n个活动的集合E={1,2,。。。,n},其中每个活动都要求使用同一个资源,而在同一时刻只能有一个活动能使用这一资源。每一活动都有使用该资源的起始时间si和完成时间fi,且si<fi,如果选择了活动i,则在半开区间[si,fi)内占用资源。根据完成时间进行贪心选择策略,完成时间早的优先安排。对于输入的n个活动起止时间用贪心法给出活动安排方法,使得在该时间段内能安排尽量多的活动。2、int ActiveManage(int s[],int f[],bool a[],int原创 2020-07-15 11:40:42 · 2772 阅读 · 0 评论 -
分治算法求最大子段和问题
分治算法求最大子段和问题int MaxMin(int a[],int left,int right)函数功能是返回数组a的从left到right部分的最大子段和,如果和为负数返回0,数组的每一元素为整数;写主函数main(),实现输入数组,调用MaxMin()函数,并输出结果功能;C或C++实现(1)解题思路:这道题要我们用分治算法求最大子段和,最大子段和问题的分治策略是:将整一个序列分为长度相同的两段子序列,然后分成三种情况,第一种情况是max=max_left;第二种情况是max=max_righ原创 2020-07-15 11:32:52 · 4573 阅读 · 1 评论