算法
文章平均质量分 65
蓝色的sky
这个作者很懒,什么都没留下…
展开
-
欧几里得算法及其扩展
当大家在学习c语言的时候都会遇到求最大公约数的的问题,这时候我们用的是辗转相除的方法,其实就是欧几里得算法。欧几里得算法的定义:定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。最大公约数(greatest common divisor)缩写为gcd。#includeint ExtendEulide(int a,int b){ return b==0? a:E原创 2016-09-09 21:58:10 · 406 阅读 · 0 评论 -
独立任务最优调度
问题描述独立任务最优调度用两台处理机A和B处理n个作业。设第i个作业交给A处理需要时间ai,交给B处理需要时间bi。由于各作业的特点和机器的性能关系,ai和bi之间没有明确的大小关系。既不有将一个作业分开由2台机器处理,也没有一台机器能同时处理2个作业。设计一个动态规划算法,使得这两台机器处理完这n个作业的时间最短。 测试用例: 6(任务数目) 2 5 7 10 5 2原创 2017-01-03 21:57:19 · 1224 阅读 · 0 评论 -
最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。
问题描述最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。input53 2 5 10 45output30#include#includeint main(){ int n,i,*a; printf("input the number of the numbers\n原创 2016-12-26 23:05:41 · 589 阅读 · 0 评论 -
迷宫问题
给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因此,她在行走过程中,不能转太多弯了,否则她会晕倒的。我们假定给定的原创 2016-12-27 19:34:32 · 538 阅读 · 0 评论 -
数独问题
设计算法求解数独#include#define n 9int a[n][n]={0, 0, 5, 3, 0, 0, 0, 0, 0,8, 0, 0, 0, 0, 0, 0, 2, 0,0, 7, 0, 0, 1, 0, 5, 0, 0,4, 0, 0, 0, 0, 5, 3, 0, 0,0, 1, 0, 0, 7, 0, 0, 0, 6,0, 0, 3, 2, 0, 0原创 2016-12-27 20:44:05 · 553 阅读 · 0 评论 -
数字组合问题
问题描述有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。 要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列: 17126425374635 当然,如果把它倒过来,也是符合要求的。 请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。 注原创 2016-12-28 07:47:27 · 424 阅读 · 0 评论 -
批处理作业
问题描述给定n个作业的集合J={J1,J2,…,Jn}。每一个作业有两项任务分别在两台机器上完成。每个作业必须先由机器1处理,再由机器2处理。作业Ji需要机器j的处理时间为tji,i=1,2,…n,j=1,2。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。则所有作业在机器2上完成处理的时间和f=F21+F22+…+F2n称为该作业调度的完成时间和。批处理作业原创 2016-12-28 08:59:20 · 982 阅读 · 0 评论 -
39级台阶问题
问题描述小明看完电影《第39级台阶》,离开电影院的时候,他数了数实际的台阶数,恰好是39级。 站在台阶前,他突然又想起一个问题:如果我每一步只能迈上1个或2个台阶,先迈左脚,然后左右交替,最后一步迈右脚,也就是说一共要迈偶数步。那么,上完39级台阶,有多少种不同的上法呢? 请利用计算机的优势,帮助小明寻找答案。回溯#includeint sum=0;int原创 2016-12-28 15:11:01 · 471 阅读 · 0 评论 -
图的m着色问题
问题描述给定无向连通图和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中每条边的两个顶点有不同的颜色。这个问题是图的m可着色判定问题。若一个图最少需要m种颜色才能使图中每条边相连接的两个顶点着不同颜色,称这个数m为这个图的色数。求一个图的色数m称为图的m可着色优化问题。 给定一个图以及m种颜色,请计算出涂色方案数。回溯#inc原创 2016-12-29 09:10:04 · 301 阅读 · 0 评论 -
电路布线问题
作电路板时,将n条连线分布到若干绝缘层上。在同一层的连线不相交。电路布线问题就是要确定将哪些连线安排到第一层上,使该层上有尽可能多的连线。动态规划#include#define n 10int a[n+1]={0,8,7,4,2,5,1,9,3,10,6};int m[n+1][n+1];void find(int i,int j){ if(m[i][j]==原创 2016-12-29 12:24:50 · 1175 阅读 · 0 评论 -
01背包问题
问题描述给定n种物品和一个背包。物品i的重量是wi,价值是vi,背包的容量为c。问应如何选择装入背包的物品,使装入背包中物品的总价值最大?Sample Input5 10wi:2 2 6 5 4vi:6 3 5 4 6Sample Output15动态规划#include#define n 5#define c 10int w[n+1]={0,2,原创 2016-12-29 20:22:45 · 256 阅读 · 0 评论 -
最小m段和
问题描述给定n个整数组成的序列,现在要求将序列分割为m段,每段子序列中的数在原序列中连续排列。如何分割才能使这m段子序列的和的最大值达到最小? input 9 3 987654321output 17#include#include#define n 9#define m 3int a[n+1]={0,9,8,7,6,5,4,3原创 2017-01-01 22:16:15 · 443 阅读 · 0 评论 -
最大k乘积
问题描述设I是一个n位十进制整数。如果将I分割为k段,则可得到k个整数。这k个整数的乘积称为I的一个k乘积。试设计一个算法,对于给定的I和k,求出I的最大k乘积。Input:5 354321Output:6420#include#define n 5#define k 3int s[n+1][n+1];int a[n+1]={1,5,4,3,2,1}原创 2017-01-01 22:14:57 · 341 阅读 · 0 评论 -
数字三角形
问题描述给定一个由n行数字组成的数字三角形,设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。测试用例: 5(行数) 7 3 88 1 0 2 7 4 4 4 5 2 6 5 输出: 30#include#define n 5int a[n][n]={7,-1,-1,-1,-1,3,8,-1,-1,-1,8,1,0,-原创 2017-01-01 22:12:58 · 231 阅读 · 0 评论 -
半数集问题
问题的描述给定一个自然数n,由n 开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n); (2) 在n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。 注意半数集是多重集。原创 2016-10-21 10:46:53 · 537 阅读 · 0 评论 -
矩阵连乘问题的动态规划解法
问题描述:设要计算矩阵连乘积A0,A1,A2,A3,A4,A5,其中各矩阵的维数分别为:A0:30*15A1:35*15A2:15*5 A3:5*10A4:10*20A5:20*25原创 2016-10-25 11:34:22 · 3762 阅读 · 0 评论 -
最长公共子序列问题(LCS)
最长公共子序列问题(LCS)问题描述:求Z={'A','B','C','B','D','A','B'},X={{'B','D','C','A','B','A'}}的最长公共子序列原创 2016-10-28 16:15:52 · 447 阅读 · 0 评论 -
众数问题
众数问题问题描述:给定一组有重复元素的数值,求其中的众数以及重数众数问题我们可以采用递归和分值的策略;我们先对数值进行排序原创 2016-10-29 21:11:32 · 602 阅读 · 0 评论 -
大数运算
所谓的大数运算其实就是一个竖式运算例如:123 + 1--------------124所以我们写的程序就是想办法来构造竖式#include#includevoid main(){ char str1[100]="123458156156"; char str2[100]="1234852425454"; int a[100]; int b[100原创 2016-10-21 10:39:45 · 235 阅读 · 0 评论 -
有重复元素的排列问题
问题描述:设R={r1,r2,r3,r4..rn},其中可能存在重复的元素,设计一种算法列出所有不同的排列树的思想:我们知道如果没有相同的元素那么所有不同的排列就是所有的元素全部排列,但是当有重复元素的时候在同一个位置相同的元素只能出现一次,那么当深度为1的时候处在同一层中元素不能有相同的,其他的层也是如此这样当我们从根节点到达叶子节点的时候就是一种。算法实现如下:原创 2016-10-21 11:06:57 · 1389 阅读 · 0 评论 -
会场安排问题
问题描述假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个算法进行安排。测试用例: 5(活动数目) 1 23 12 28 25 35 27 80 36 50 输出:3 贪心#include #define n 5 int a[n][2]={{1,23},{12,28},{25,35},{27,80},{36,50}}; i原创 2017-01-01 22:05:21 · 258 阅读 · 0 评论 -
汽车加油问题
汽车加油问题一辆汽车加满油后可以行驶n公里,旅途中有加油站,设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。测试用例: 7 7 (n k) 1 2 3 4 5 1 6 6(第k个加油站与第k-1个加油站之间的距离,其中第一个代表起点,最后一个代表终点。) 输出: 4(最少加油次数) 1 2 3 4 5 1原创 2017-01-01 22:09:20 · 277 阅读 · 0 评论 -
石子合并问题
问题描述在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选择相邻的两堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。测试用例: 4(石子的堆数) 4 4 5 9(每一堆的石子数目) 输出: 43 54 这里只写了最大,最小思路相同#in原创 2017-01-01 22:11:37 · 297 阅读 · 0 评论 -
n皇后
问题描述在n*n的棋盘上放置彼此不受攻击的n个皇后,按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n*n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。//暴力#include#include#include#define n 8//指定了8个皇后可以修改int a[n];int ok(){ int原创 2017-04-04 21:29:03 · 274 阅读 · 0 评论