算法
ts_Maple
我只是把博客当做了记事本用,没有详细的介绍和总结。本人还是一只菜鸟,还请大家多多指点。
展开
-
石子合并问题
问题描述:在一个圆形操场的四周摆放着n堆石子,现要将石子有次序的合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。 动态规划引入:如果N-1 次合并的全局最优解包含了每一次的子问题的最优解,那么经这样的N-1次合并后的得分总和必然是最优的。因此我们需要引入动态规划来求出最优解。 假设有石头A原创 2016-04-25 21:22:59 · 351 阅读 · 0 评论 -
多机调度问题-贪心算法
设有n个独立的作业{1, 2, …, n}, 由m台相同的机器进行加工处理. 作业i所需时间为t i. 约定:任何作业可以在任何一台机器上加工处理, 但未完工前不允许中断处理,任何作业不能拆分成更小的子作业。要求给出一种作业调度方案,使所给的n 个作业在尽可能短的时间内由m台机器加工处理完成。 多机调度问题是一个NP完全问题,到目前为止还没有完全有效的解法。对于这类问题,用贪心选择策略有时可以设原创 2016-05-13 08:06:41 · 9330 阅读 · 1 评论 -
最优分解问题-贪心算法
问题描述:设你是一个正整数。现在要求将n分解为若干互不相同的自然数之和,且使这些自然数的乘积最大。 问题分析: (1)对于n<=4 可以验证其分解成几个正整数的和的乘积是小于n的。 (2)对于n>4,能证明其能分解成几个数的和使得乘积不小于n。如果分解成1和n-1,那么对于乘积是没有帮助的;因此假设n分解成a和n-a(2<=a<=n-2),如果a和n-a仍然大于4,那么继续分解直至a,n-a原创 2016-05-13 08:15:53 · 8707 阅读 · 1 评论 -
运动员最佳配对问题
一个羽毛球队有男女运动员各n人,给定2个n*n矩阵P和Q。P[i][j]是男运动员i和女运动员j配对组成混合双打是的竞赛优势;Q[i][j]则是女运动员i和男运动员j配合是的竞赛优势。显然,由于技术的配合和心理状态等各种因素的影响,P[i][j]不一定等于Q[j][i]。设计一个算法,计算出男女运动员的最佳配对法,使各组男女双方竞赛优势乘积的总和达到最大。package Test.qddx;impo原创 2016-06-11 16:10:30 · 1758 阅读 · 0 评论 -
排序算法(1)-直接插入排序
在要排序的一组数中,假设前面的n-1个数已经试排好顺序的。 现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。public class InsertSort { // 从小到大插入排序 static void Insert(int a[]) { int temp = 0; for (int i原创 2017-02-16 21:18:39 · 334 阅读 · 0 评论 -
排序算法(2)-希尔排序
希尔排序 先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。 1、选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1; 2、按增量序列个数k,对序列进行k 趟排序; 3、每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1时,整个序列作为一原创 2017-03-24 18:58:03 · 283 阅读 · 0 评论 -
排序算法(3)-简单选择排序
简单选择排序。 基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换; 然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。 从小到大进行排序。 public class SelectSort { public static void Sort(int[] a) { int position = 0;原创 2017-03-24 19:10:04 · 548 阅读 · 0 评论