
算法
酒中醉去梦中来
个人是个小白,有不对的欢迎大家指正
展开
-
最大间隙问题
最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。原创 2017-01-24 10:47:26 · 261 阅读 · 0 评论 -
合并排序
合并排序/*合并排序*/#include #include #include void merge(int a[], const int indexStart, const int indexMid, const int indexEnd){ int i; int sizea1 = indexMid-indexStart+2; int size原创 2017-01-24 12:28:34 · 258 阅读 · 0 评论 -
循环赛日程表问题
循环赛日程表问题//循环赛日程表#include#include#define n 8//k一次处理几行,i第几列,index第几行 int a[n][n];int p,q,j; int main(){ int index=1,k=1,i; for( i=0;i<n;i++){ a[0][i]=i+1; } w原创 2017-01-24 12:30:09 · 385 阅读 · 0 评论 -
整数因子分解问题
大于1的正整数n可以分解为n=x1*x2*…*xn。例如,当n=12时,共有以下8种分解方法:12=1212=6*212=4*312=3*412=3*2*212=2*612=2*3*212=2*2*3 编程任务:给定正整数n,试计算n有多少种不同的分解模式。#includeint f(int n){ int i; int count=0; i原创 2017-01-24 12:31:59 · 1769 阅读 · 0 评论 -
会场安排问题
假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个算法进行安排。测试用例: 5(活动数目) 1 23 12 28 25 35 27 80 36 50 输出:3 #include#define n 5int judge(int *flag){//判断活动是否已经安排完 for(int i=0;i<n;i++)//如果有一个为0,则为0原创 2017-01-24 18:00:37 · 511 阅读 · 0 评论 -
最优服务次序问题
设有n个顾客同时等待一项服务,顾客i所需要的服务时间为ti,应如何安排顾客的服务次序,才能使平均等待时间最短?平均等待时间是n个顾客等待服务时间的总和除以n。#include#include#define n 10using namespace std;int main(){ int t[n]={56,12,1,99,1000,234,33,55,99,812}; sort(原创 2017-01-24 18:02:51 · 397 阅读 · 0 评论 -
汽车加油问题
一辆汽车加满油后可以行驶n公里,旅途中有加油站,设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。测试用例: 7 7 (n k)1 2 3 4 5 1 6 6(第k个加油站与第k-1个加油站之间的距离,其中第一个代表起点,最后一个代表终点。) 输出: 4(最少加油次数)#include#includeusing namespace std;#defin原创 2017-01-24 18:05:03 · 516 阅读 · 0 评论 -
删数问题
给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n和k,设计一个算法,找出剩下数字组成的新数最少的删数方案。 输入示例: 178543 4输出: 13 #include#includeint main(){ int *a; int *flag; int num=177543; int m=4;原创 2017-01-24 18:06:08 · 415 阅读 · 0 评论 -
最优分解问题
设n是一个正整数,现在要求将n分解为若干个互不相同的自然数的和,使这些自然数的乘积最大。输入 10 输出 30 #includeint main(){ int n; printf("请输入n的值"); scanf("%d",&n); int a[10]; int i=2; while(n>0){ a[i]=i; n=n-i; if(n<=a[i原创 2017-01-24 18:07:24 · 441 阅读 · 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称为该作业调度的完成时间和。 批处理作业调度问原创 2017-01-24 18:11:17 · 800 阅读 · 0 评论 -
符号三角形问题
下图所示的三角形中,有14个“+“和14个“-”。2个同号下面是+,两个异号下面是-。 在一般情况下,符号三角形的第一行有n个符号。符号三角形问题,要求对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”相同。+ + - + - + ++ - - - - +- + + + -- + + -- + -- -+暴力#include#inc原创 2017-01-24 18:14:29 · 389 阅读 · 0 评论 -
最优合并问题
给定k个排好序的序列s1,s2,…,sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并两个长度分别为m和n的序列需要m+n-1次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需要的总比较次数最少。测试用例: 4(序列数)5 12 11 2(序列中的元素数) 输出: 78(最差情况) 52(最优情况)原创 2017-01-24 18:08:14 · 1221 阅读 · 0 评论 -
n皇后问题
在n*n的棋盘上放置彼此不受攻击的n个皇后,按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n*n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。暴力算法#include#includeint count=0;bool ok(int *a,int n){//绝对没有在同一行的,因为赋值时已经确定了 for(int原创 2018-05-10 23:15:36 · 281 阅读 · 0 评论 -
0-1背包问题
给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。 问应如何选择装入背包的物品,使得装入背包中物品的总价值最大 对于一种物品,要么装入背包,要么不装。所以对于一种物品的装入状态可以取0和1. 我们设物品i的装入状态为xi,xi∈ (0,1),此问题称为0-11背包问题。 过程分析 数据:物品个数n=5,物品重量w[n]={2,2,6,5,4},物品价值...原创 2018-12-05 19:44:25 · 192 阅读 · 0 评论 -
快速排序问题
快速排序#include int a[101],n;//定义全局变量,这两个变量需要在子函数中使用 void quicksort(int left,int right) { int i,j,t,temp; if(left>right) return; temp=a[left];原创 2017-01-24 12:27:30 · 284 阅读 · 0 评论 -
斐波拉契数列
斐波拉契数列#includeint a[100];int f(int n){ int t; if(n==0||n==1) return 1; if(a[n]>0) return a[n]; t=f(n-1)+f(n-2); a[n]=t; return t; } int main(){ int n; printf("请输入一个自原创 2017-01-24 12:25:20 · 243 阅读 · 0 评论 -
最多约数问题
最多约数问题。正整数 x 的约数是能整除x的正整数,其约数的个数记为div(x),例如div(10)=4。设a 和 b 是两个正整数,找出a 和 b 之间约数个数最多的数x 的约数个数。原创 2017-01-24 10:25:44 · 459 阅读 · 0 评论 -
勾股定理问题
勾股定理/*勾股定理*/#include #include int main(){ int a=0,b=0,d=0; double c = 0.0; for(a=1;a<100;++a) { for(b=a+1;b<100;++b) { d = (int)(c = sqrt(a*a+b*b)原创 2017-01-24 10:50:14 · 385 阅读 · 0 评论 -
金币阵列问题
.金币阵列问题。有m*n枚金币在桌面上排成一个金币阵列。每一个金币正面朝上,或背面朝上,分别用0和1表示。 金币阵列游戏的规则是:(1)每次可将任一行金币翻过来放在原来的位置上;(2)每次可任选2列,交换这2列金币的位置。 给定金币的初始状态和目标状态,计算按金币游戏规则,将金币阵列从初始状态变换到目标状态所需的最少变换次数。原创 2017-01-24 10:39:48 · 275 阅读 · 0 评论 -
整数划分问题
整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n。 如6的整数划分为 6 5 + 1 4 + 2, 4 + 1 + 1 3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1 2 + 2 + 2, 2 + 2 + 1 + 1, 2 + 1 + 1 + 1 + 1 1 +原创 2017-01-24 10:54:20 · 294 阅读 · 0 评论 -
字典序问题
//字典序问题。在数据加密和数据压缩中常需要对特殊的字符串进行编码。//给定的字母表A由26个小写字母组成。该字母表产生的升序字符串中字母//从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1次。//例如,a,b,ab,bc,xyz等字符串都是升序字符串。//现在对字母表中产生的所有长度不超过6的升序字符串,计算它在字典中的编码。#include#incl原创 2017-01-24 10:56:50 · 592 阅读 · 0 评论 -
最大字段和问题
给定n个整数(可能包含负数)组成的序列,求该序列子段和的最大值。例子.数组为(-2,11,-4,13,-5,-2三层循环#include#define n 6int main(){ int a[n]={-2,11,-4,13,-5,-2}; int i,j,k; int besti,bestj; int sum=0; for(i=0;i<n;i++)原创 2017-01-24 11:58:59 · 355 阅读 · 0 评论 -
全排列问题
1.2.3实现全排列原创 2017-01-24 12:03:18 · 258 阅读 · 0 评论 -
半数集问题
给定一个自然数 n,由n开始可以依次产生半数集set(n)中的数如下:n<200 (1)nÎset(n); (2)在 n 的左边加上一个自然数,但该自然数不能超过最近添加数的一半; (3)按此规则进行处理,直至不能添加自然数为止。 例如,set(6)={6,16,26,126,36,136}。 注意:该半数集是多重集。 要求:对于给定的自然数n,计算半数集set(n)中的元素个数。原创 2017-01-24 12:10:38 · 318 阅读 · 0 评论 -
有重复元素的排列问题
设有{r1,r2,...,rn}共n个元素,这n个元素中可能存在重复元素,试设计一个算法,列出这n个元素的不同排列。原创 2017-01-24 12:16:01 · 393 阅读 · 0 评论 -
半数单集问题
则进行处理,直至不能添加自然数为止。 例如,set(6)={6,16,26,126,36,136}。 注意:该半数集是多重集。 要求:对于给定的自然数n,计算半数集set(n)中的元素个数。/(1)//半数集:两种思想如下//(1)f(n)=1+f(1)+f(2)+f(3)+.....+f(n/2)//(2)f(n)=f((n/2)*2-1)+f(n/2) //半数单集原创 2017-01-24 12:14:10 · 501 阅读 · 0 评论 -
排列的字典序问题
n个元素共有n!个不同的排列。将这n!个元素按照字典序排列,可以从0编号,直至n!-1。例如,当n=3时,6个不同排列的字典序值为: 0 1 2 3 4 5 123 132 213 231 312 321编程任务:给定n以及n个元素的一个排列,计算出这个排列的字典序值;给定一个字典序值,计算出该原创 2017-01-24 12:19:44 · 595 阅读 · 0 评论 -
集合划分问题
给定含有n个元素的集合{1,2,...,n},可以将其划分为若干非空子集。例如,当n=4时,集合{1,2,3,4}可以构造15个不同的划分,如下。 {{1},{2},{3},{4}} {{1234}} {{1},{234}};{{2},{134}};{{3},{124}};{{4},{123}} {{12},{34}};{{13},{24}};{{14},{原创 2017-01-24 12:21:26 · 491 阅读 · 0 评论 -
标准二维表问题
标准二维表问题。设n是一个正整数,2*n的二维表是由正整数1,2,…,2n组成的2*n数组,该数组的每行从左到右递增,每列从上到下递增。2*n的标准二维表全体记为tab(n)。例如,当n=3时,tab(3)的二维表如下图所示:要求:给定正整数n,计算tab(n)中标准二维表的个数。样例输入:3 样例输出:5#include int f(int n){ if(n==0原创 2017-01-24 12:22:58 · 1057 阅读 · 0 评论 -
java实现循环方阵,递归与分治思想
package test;/** * @author * * @createtime 2018.12.5 */public class test { public static int [][]a=new int[10][10]; public void CyclicArray(int k,int t,int n){ int i,j; ...原创 2018-12-05 20:53:36 · 452 阅读 · 0 评论