随笔分类 - C语言与算法
摘要:C标准库中生成伪随机数的是rand函数,使用这个函数需要包含头文件stdlib.h,它没有参数,返回值是一个介于0和RAND_MAX之间的接近均匀分布的整数。RAND_MAX是该头文件中定义的一个常量,在不同的平台上有不同的取值,但可以肯定它是一个非常大的整数。通常我们用到的随机数是限定在某个范围之中的,例如0~9,而不是0~RAND_MAX,我们可以用%运算符将rand函数的返回值处理一下:int x = rand() % 10;C标准库允许我们自己指定一个初值,然后在此基础上生成伪随机数,这个初值称为Seed,可以用srand函数指定Seed。通常我们通过别的途径得到一个不确定的数作为Se
阅读全文
摘要:图的m-着色判定问题——给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色? 图的m-着色优化问题——若一个图最少需要m种颜色才能使图中任意相邻的2个顶点着不同颜色,则称这个数m为该图的色数。求一个图的最小色数m的问题称为m-着色优化问题。算法描述(迭代算法)color[n]存储n个顶点的着色方案,可以选择的颜色为1到m t=1 对当前第t个顶点开始着色: 若t>n 则已求得一个解,输出着色方案即可 否则,依次对顶点t着色1-m, 若t与所有其它相邻顶点无颜色冲突,则继续为下一顶点着色;否则,回溯...
阅读全文
摘要:本人较懒,以下拷贝自老师的课件。。。除了代码。。问题描述 给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。作业Ji需要机器j的处理时间为tji。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。所有作业在机器2上完成处理的时间和称为该作业调度的完成时间和。批处理作业调度问题要求: 对于给定的n个作业,制定最佳作业调度方案,使其完成时间和达到最小。实例分析 tji 机器1 机器2 作业1 2 1 ...
阅读全文
摘要:问题描述:八皇后问题是十九世纪著名数学家高斯于1850年提出的。问题是:在8*8的棋盘上摆放8个皇后,使其不能互相攻击,即任意的两个皇后不能处在同意行,同一列,或同意斜线上。可以把八皇后问题拓展为n皇后问题,即在n*n的棋盘上摆放n个皇后,使其任意两个皇后都不能处于同一行、同一列或同一斜线上。问题分析:显然,每一行可以而且必须放一个皇后,所以n皇后问题的解可以用一个n元向量X=(x1,x2,.....xn)表示,其中,1≤i≤n且1≤xi≤n,即第n个皇后放在第i行第xi列上。由于两个皇后不能放在同一列上,所以,解向量X必须满足的约束条件为:xi≠xj;若两个皇后的摆放位置分别是(i,xi)和
阅读全文
摘要:作为算法设计分析的经典问题,已经写过一次了,不过实现的方法不同,这次是回溯法解决问题。问题还是老问题,但是方法是新的! 哈哈在这里再简单写一下问题要求:给定n中物品和一个容量为c的背包,物品i的重量为Wi,其价值为Vi,0-1背包问题是如何选择装入背包的物品(物品不可分割),使得装入背包的物品的价值为最大。1.题目分析:考虑到每种物品只有2 种选择,即装入背包或不装入背包,并且物品数和背包容量已给定,要计算装入背包物品的最大价值和最优装入方案,可用回溯法搜索子集树的算法进行求解。2.算法设计:a. 物品有n种,背包容量为C,分别用p[i]和w[i]存储第i种物品的价值和重量,用x[i]标记第i
阅读全文
摘要:这几天一直在写 算法设计与分析 的算法实现代码,算法学不好,代码写不出啦下面这个题比较简单,还可以耍耍 ,再难点话的估计就治不了了。。。设有n=2k个选手参加比赛,要求设计一个满足一下要求的比赛日程表:(1)每个选手必须与其他的n-1个选手个比赛一次;(2)每个选手每天只能赛一次 。按此要求可以把比赛日程表设计成一个n行n-1列的二维表,其中第i行第j列表示第i个选手在 第j天比赛的选手。题目很简单,代码也不多下面是简单的实现代码#include<stdio.h>#include<math.h>voidgametable(intk){inta[100][100];int
阅读全文
摘要:上次写的0-1背包问题解决方法是动态规划,其实有的人一看到0-1背包问题时第一反应就是使用贪心法来解决问题。但是贪心法求的结果并不一定就是最优解,举个例子: 用word画的,质量不是很好,凑合着看吧先。。。可以看出来,贪心法先放最大的最后却不一定得到最大的价值。所以用贪心法解决0-1问题是不靠普的。说着说着就有点离题了~\(≧▽≦)/~啦啦啦今天写的问题的 活动安排问题,使用的是贪心法来解决的。问题描述:设有n个活动的集合E={1,2,.....,n},其中每个活动都要求使用同一个资源(如演讲会场),而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间Si和一.
阅读全文
摘要:这个学期开的算法设计与分析课程老师说是研究生才要学的课,但是我们大二就要学!虽然有难度,但还是要学滴。上机课题目有一道0-1背包的问题,上课的时候由于没有听课。。所以只有自己再啃书本了。代码虽然不长,但是还是。。很有。。技术含量的。本人文笔不是很好,所以就 不多说啦!直接上菜!问题描述:给定N中物品和一个背包。物品i的重量是Wi,其价值位Vi,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大??在选择物品的时候,对每种物品i只有两种选择,即装入背包或不装入背包。不能讲物品i装入多次,也不能只装入物品的一部分。因此,该问题被称为0-1背包问题。问题分析:令V(i,j
阅读全文