- 浏览: 318958 次
- 性别:
- 来自: 西宁
文章分类
- 全部博客 (120)
- Java Thought (29)
- Java Pattern (4)
- Data Base (7)
- Algorithm Design (33)
- Linux (0)
- Mysql (2)
- Oracle (0)
- ConstructionDesign-架构 (5)
- Spring Platform (0)
- Tomcat (1)
- JavaScript (7)
- Web System (3)
- MS SQLServer (1)
- 软件哲学 (6)
- View (3)
- Java GUI (4)
- CSSDIV (7)
- CloudComputing (0)
- WebService (0)
- SystemOrProject (2)
- SOA (0)
- 互转共享 (3)
- 偶尔java习题 (0)
- Thinks with does (1)
最新评论
-
sassds:
佩服啊 高手
分享一款js特效 -
bhjackson:
学习啦,能否详细介绍下回溯的过程?O(∩_∩)O谢谢
分享回溯法- 找n个数中r个数的组合 -
zk7019311:
了解了解。。。。。
业务层代码复用的一点建议 -
lijie1819:
看到LZ的设计思想,感觉和抽象工厂模式有点相像。
业务层代码复用的一点建议 -
wjjcml1982:
酷毙了!楼主太强悍了!
分享一款js特效
8. 数字迷问题。
A B C A B
X A
------------
D D D D D D
9. 简单分治问题。
用递归分治法求出n个元素集合中的最大值和最小值。
10. 大整数乘法。
设计一个有效地算法,进行两个n(n<256)位大整数的乘法运算。
11. 取数问题。
有两个人轮流取2n个数中的n个数,所取数之和大者为胜。请编写算法,让先取数者胜,模拟取数过程。
12. 币值统计问题。
某单位给每个职工发工资(精确到元),为了保证不要临时归还零钱且取款的张数最少,取工资前需要统计出所有职工的工资所需
各种币值(100,50,20,10,5,2,1元共7种)的张数,请编程完成。
13. 子集分划问题。
给定正整数n, 计算出n个元素的集合{1,2,...,n}可以划分为多少个不同的非空子集。
14. 最X序列问题。
找出由n个数组成的序列的最长单调递增子序列。
15. 硬币找钱问题。
有6种不同面值的硬币,各硬币的面值分别为5分、1角、2角、5角、1元和2元。先要用这些面值的硬币来购物和找钱。
购物时可以使用的各种面值的硬币个数存于数组coins[6]中,商店里各面值的硬币有足够多。在一次购物中希望使用最少硬币个数。
对于给定的各种面值的硬币个数和付款金额,编程计算使用硬币个数最少的交易方案。
input: 输入6个整数和一个2位小数的实数,分别代表可以使用的各种面值的硬币个数和付款金额。
output:最少硬币个数。 如果不可能完成交易,则输出"impossible"。
16. 作业调度问题。
n个作业(1,2,...,n)要在由两台机器M1和M2组成的流水线上完成加工。每个作业加工顺序都是现在M1上加工,
然后再M2上加工。M1和M2加工作业i所需要的时间分别为ai和bi。确定这n个作业的最优加工顺序,使得从第一个
作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需要的时间最少。
比如:
n=3
-------------------------------------------------
作业i 机器M1 机器M2
1 2 1
2 3 1
3 2 3
-------------------------------------------------
这3个作业的6种可能的调度方案是(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1),它们所对应的完成时间和分别是19,18,20,21,
19,19. 显而易见,最佳调度方案是(1,3,2),其完成时间和为18.
评论
package abstractandlogic; /** * 16. 作业调度问题。 n个作业(1,2,...,n)要在由两台机器M1和M2组成的流水线上完成加工。每个作业加工顺序都是现在M1上加工, * 然后再M2上加工。M1和M2加工作业i所需要的时间分别为ai和bi。确定这n个作业的最优加工顺序,使得从第一个 * 作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需要的时间最少。 * * @since jdk1.6 * @author 毛正吉 * @version 1.0 * @date 2010.06.08 * */ public class WorkAttemper { /** * @param args */ public static void main(String[] args) { int n = 3; int[][] job = { { 0, 0, 0 }, { 0, 2, 1 }, { 0, 3, 1 }, { 0, 2, 3 } }; WorkAttemper wa = new WorkAttemper(n, job); wa.tryi(1); int[] x = wa.getBestx(); int bestf = wa.getBestf(); for (int i = 1; i <= n; i++) { System.out.print(x[i] + " "); } System.out.println(); System.out.println(bestf); } private int n; // n个作业 private int[] x; // n个作业 private int[][] job; // 作业在机器1和机器2上的时间 private int[] bestx; // 最优作业调度顺序 private int bestf; // 最短时间 private int f1 = 0; // 作业在机器1上完成的时间 private int[] f2; // 作业在机器2上完成的时间 private int f; //完成总的时间和 /** * 构造 * * @param _n * @param _job */ public WorkAttemper(int _n, int[][] _job) { n = _n; x = new int[n + 1]; bestx = new int[n + 1]; job = new int[n + 1][3]; for (int i = 1; i <= n; i++) { x[i] = i; for (int j = 1; j <= 2; j++) { job[i][j] = _job[i][j]; } } bestf = 32767; f1 = 0; f2 = new int[n + 1]; f = 0; } /** * 递归回溯 * * @param i */ public void tryi(int i) { if (i == n + 1) { for (int j = 1; j <= n; j++) { bestx[j] = x[j]; bestf = f; } } else { for (int j = i; j <= n; j++) { f1 += job[x[j]][1]; if (f2[i - 1] > f1) { f2[i] = f2[i - 1] + job[x[j]][2]; } else { f2[i] = f1 + job[x[j]][2]; } f += f2[i]; if (f < bestf) { swap(x, i, j); tryi(i + 1); swap(x, i, j); } f -= f2[i]; f1 -= job[x[j]][1]; } } } /** * 交换 * * @param x * @param i * @param j */ private void swap(int[] x, int i, int j) { int temp = x[i]; x[i] = x[j]; x[j] = temp; } /** * 获得最优调度顺序 * * @return */ public int[] getBestx() { return bestx; } /** * 获得作业完成最短时间 * * @return */ public int getBestf() { return bestf; } }
package abstractandlogic; /** * 8. 数字迷问题。 ABCAB * A = DDDDDD * * @sincejdk1.6 * @author 毛正吉 * @version 1.0 * @date 2010.06.08 * */ public class NumberAnagram { /** * @param args */ public static void main(String[] args) { int D; int A; for (D = 1; D <= 9; D++) { int S = D * 100000 + D * 10000 + D * 1000 + D * 100 + D * 10 + D; for (A = 2; A <= 9; A++) { int R = S / A; int A0 = R / 10000; char[] ch = (R + "").toCharArray(); int len = ch.length; if (A == A0) { if (len == 5) { if (ch[0] == ch[3] && ch[1] == ch[4] && ch[0] != ch[2] && ch[1] != ch[2]) { System.out.print(ch); System.out.print(" * " + ch[0] + " = " + S); } } } } } } }
输出:
37037 * 3 = 111111
package abstractandlogic; /** * 12. 币值统计问题。 某单位给每个职工发工资(精确到元),为了保证不要临时归还零钱且取款的张数最少,取工资前需要统计出所有职工的工资所需 * 各种币值(100,50,20,10,5,2,1元共7种)的张数,请编程完成。 * * 贪心策略:币值从大到小排序 * * @sincejdk1.6 * @author 毛正吉 * @version 1.0 * @date 2010.06.07 * */ public class CurrencyStatistics { /** * @param args */ public static void main(String[] args) { CurrencyStatistics cs = new CurrencyStatistics(); int n = 148; // 职工工资 cs.currencyStatistics(n); } private int[] cv = { 100, 50, 20, 10, 5, 2, 1 }; // 币值从大到小排列 private int[] s = new int[cv.length]; // 每种币值所取的数量 /** * 币值统计 * * @param n */ public void currencyStatistics(int n) { for (int i = 0; i < cv.length; i++) { int count = n / cv[i]; s[i] = count; n -= (count * cv[i]); } for (int i = 0; i < s.length; i++) { System.out.print(s[i] + " "); // 输出所取每种币值的数量 } } }
发表评论
-
开散列的简单模拟(一)
2010-06-28 08:33 17771. 散列 散列有两种 ... -
递归和动态规划构造两个字符序列的最长公共字符子序列
2010-06-28 08:28 4460应je朋友要求,所以翻开以前的算法题目,整理了以下,给 ... -
最大公约数的应用 - 分享
2010-06-25 08:08 17811.先看一家大公司笔试题 数组中有n个数据,要将它们顺 ... -
信息数字化解逻辑题分享
2010-06-21 08:09 12201. 前提条件: 将逻辑题目中的信息用数字化描述。 ... -
递归算法分析-分享
2010-06-19 16:09 15241. 深入认识递归 (1) 递 ... -
非递归算法分析实例分享
2010-06-18 15:47 10121 仅仅依赖于问题规模的时间复杂度 (1) 例1: 交换i和 ... -
NP完全性问题
2010-06-18 14:02 6966在学习算法设计与分析时,经常会提到NP完全性问题,到底 ... -
算法分析精述分享
2010-06-18 12:03 8201. 算法分析的评价体系 评价算法的三条主要标准是: ... -
贪婪策略算法的总结分享
2010-06-11 08:30 59711. 贪婪算法描述 贪婪算法又叫登山法,它的根本思想是 ... -
带权有向图 - 边上权值非负情形的单源最短路径问题
2010-06-07 08:57 26341. 问题描述: 给定 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)四
2010-06-07 08:54 132221. 工作分配问题。 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)三
2010-06-07 08:53 104917. 字符统计问题。 编写一个算法,统计在一个输入 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)一
2010-06-07 08:38 11321. 线程问题。 设计4个线程,其中两个线程每次对j增加 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)
2010-06-07 08:37 18351. 线程问题。 设计 ... -
Java快速排序算法整理(二)
2010-05-31 14:04 1008package boke.sort; /** * 快 ... -
Java快速排序算法整理(一)
2010-05-31 13:39 628package boke.sort; /** * 快 ... -
Java最小堆实现
2010-05-31 08:29 58041.堆结点 package boke.heap1; /* ... -
Java插入排序代码整理
2010-05-28 14:44 1212package boke.sort; /** * 插 ... -
Java选择排序代码整理
2010-05-28 14:37 1478package boke.sort; /** * 选 ... -
Java冒泡排序代码整理
2010-05-28 14:26 1929Java冒泡排序代码整理: package boke.sor ...
相关推荐
PHPWind dodostyle模板
DODO研究所-NFT 全景解析|历史、当下和未来
PHP整站打包程序-By DoDo 小巧、快捷、推荐!
林dodo.zip
Dodo_apktool.zip
DODO:流动性比未拆单高10倍 什么是DODO? :writing_hand: DODO基于全新的做市商算法,其基本思想是风险中立,以保持流动性提供者的投资组合稳定。 与AMM相比,DODO的流动性要好10倍。 谁审核DODO? 是一家领先...
因为安卓系统是开源的所以给我们自己个性化手机带来了很大的便利。不需要进行复杂的破解等操作甚至只需要几个简单的小软件我们就可以制作一个属于自己的ROM。下面这个就是apk文件的反编译工具和签名工具
一块锁屏主题,很漂亮的相信大家一定会喜欢的
任务/待办事项保存我在代码中如何称呼它们的简单待办事项和“任务”是DoDo的一项功能。 一些简单的文本,带有用于将项目标记为已完成的复选框,一个编辑按钮和一个删除按钮。 所有这些都将显示在列表中。 每个任务的...
android反编译工具,带UI界面,可签名
DoDo(兜兜)截屏缩放大师(豪华版)[V 7.0.0 免费]。 1、此版免费。 2、支持捐助。 详细介绍: 中国辽宁大连,鑫信软件全力打造的,经典大众软件之一。简单的说,就是截屏大师和缩放大师二合一软件。 ...
DoDo(兜兜)录音摄像大师(豪华版)。 1、此号版本免费。 2、支持购买捐助。 详细介绍: 中国辽宁大连,鑫信软件全力打造的,经典大众软件之一。简单的说,就是录音大师和摄像大师二合一软件 目前...
渡渡鸟
dodo.js Javascript游戏引擎 Dodo.js是一个新生的轻量级(<500K)javascript游戏引擎。 该框架依赖 Underscore.js,“有用的函数式编程助手” PIXI用于图形处理 ... 但是,它可以很容易地扩展到中等规模的项目。
待办事项后端 DoDo的服务器端代码-您的任务和时间管理器!
Dodo APK Tools(Android程序反编译器)绿色版 老外写的《android-apktool》软件,可以帮助我们把APK反编译,生成程序的源代码和图片、XML配置、语言资源等文件。我们对图片和语言资源等文件修改后,可以再把它们编译...
python库。资源全名:dodo-0.1.tar.gz
dodo:小技巧和任务
动物内容聚合站The DoDo:将萌宠进行到底.docx