- 浏览: 318960 次
- 性别:
- 来自: 西宁
文章分类
- 全部博客 (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特效
17. 字符统计问题。
编写一个算法,统计在一个输入字符串中各个不同字符出现的频度。
18. 最优服务次序问题。
设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti, 1<=i<=n。应如何安排n个顾客的服务次序才能使平均等待时间达到最小呢?
平均等待时间是n个顾客等待服务时间的总和除以n。
input: 正整数n,表示n个顾客。 接下来一行输入n个正整数,表示n个顾客需要的服务时间。
output:最小的平均等待时间
例如:
input:
10
56 12 1 99 1000 234 33 55 99 812
output:
532.00
19. 多处最优服务次序问题。
设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti, 1<=i<=n。共有s处可以提供此项服务。应如何安排n个顾客的服务次序才能使
平均等待时间达到最小呢?平均等待时间是n个顾客等待服务时间的总和除以n。
输入:2个正整数n和s,表示有n个顾客且有s处可以提供顾客需要的服务。
接下来一行中有n个正整数,表式n个顾客需要的服务时间。
输出:最小的平均等待时间
例如:
input:
10 2
56 12 1 99 1000 234 33 55 99 812
output:
336
20. 最优分解问题。
设n是一个正整数。现在要求将n分解为若干互不相同的自然数之和,且使这些自然数的乘积最大。
评论
9 楼
maozj
2010-07-30
jellyfish 写道
maozj 写道
20. 最优分解问题。
输出:
2 + 3 + 5 = 10
2 * 3 * 5 = 30
package boke.written; /** * 20. 最优分解问题。 设n是一个正整数。现在要求将n分解为若干互不相同的自然数之和,且使这些自然数的乘积最大。 * 贪心算法 * @since jdk1.5及其以上 * @author 毛正吉 * @version 1.0 * @date 2010.06.07 * */ public class DicompNumber { /** * @param args */ public static void main(String[] args) { int n = 10; dicomp(n); } public static void dicomp(int n) { int sum = 1; int sun = 0; int[] a = new int[n + 1]; int k = 1; if (n < 3) { a[1] = 0; return; } if (n < 5) { a[k] = 1; a[++k] = n - 1; return; } a[1] = 2; n -= 2; while (n > a[k]) { k++; a[k] = a[k - 1] + 1; n -= a[k]; } if (n == a[k]) { a[k]++; n--; } for (int i = 0; i < n; i++) { a[k - i]++; } // StringBuffer s = new StringBuffer(); StringBuffer b = new StringBuffer(); for (int i = 1; i < a.length; i++) { if (a[i] != 0) { sun += a[i]; sum *= a[i]; s.append(a[i] + " * "); b.append(a[i] + " + "); } } String ss = s.substring(0, s.length() - 3); String bb = b.substring(0, b.length() - 3); ss += " = "; bb += " = "; ss += sum + ""; bb += sun + ""; System.out.println(bb); System.out.println(ss); } }
输出:
2 + 3 + 5 = 10
2 * 3 * 5 = 30
10 = 2 + 2 + 2 + 2 + 2
2 * 2 * 2 * 2 * 2 = 32 > 30
???
最优分解问题。 设n是一个正整数。现在要求将n分解为若干互不相同的自然数之和,且使这些自然数的乘积最大。
注意:将n分解为若干互不相同的自然数之和.
8 楼
jellyfish
2010-07-29
maozj 写道
20. 最优分解问题。
输出:
2 + 3 + 5 = 10
2 * 3 * 5 = 30
package boke.written; /** * 20. 最优分解问题。 设n是一个正整数。现在要求将n分解为若干互不相同的自然数之和,且使这些自然数的乘积最大。 * 贪心算法 * @since jdk1.5及其以上 * @author 毛正吉 * @version 1.0 * @date 2010.06.07 * */ public class DicompNumber { /** * @param args */ public static void main(String[] args) { int n = 10; dicomp(n); } public static void dicomp(int n) { int sum = 1; int sun = 0; int[] a = new int[n + 1]; int k = 1; if (n < 3) { a[1] = 0; return; } if (n < 5) { a[k] = 1; a[++k] = n - 1; return; } a[1] = 2; n -= 2; while (n > a[k]) { k++; a[k] = a[k - 1] + 1; n -= a[k]; } if (n == a[k]) { a[k]++; n--; } for (int i = 0; i < n; i++) { a[k - i]++; } // StringBuffer s = new StringBuffer(); StringBuffer b = new StringBuffer(); for (int i = 1; i < a.length; i++) { if (a[i] != 0) { sun += a[i]; sum *= a[i]; s.append(a[i] + " * "); b.append(a[i] + " + "); } } String ss = s.substring(0, s.length() - 3); String bb = b.substring(0, b.length() - 3); ss += " = "; bb += " = "; ss += sum + ""; bb += sun + ""; System.out.println(bb); System.out.println(ss); } }
输出:
2 + 3 + 5 = 10
2 * 3 * 5 = 30
10 = 2 + 2 + 2 + 2 + 2
2 * 2 * 2 * 2 * 2 = 32 > 30
???
7 楼
zxflb
2010-07-28
向楼主 学习
6 楼
maozj
2010-06-10
19. 多处最优服务次序问题。 另外一种解法
package abstractandlogic; import java.util.Arrays; /** * 19. 多处最优服务次序问题。 设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti, 1<=i<=n。共有s处可以提供此项服务。应如何安排n个顾客的服务次序才能使 * 平均等待时间达到最小?平均等待时间是n个顾客等待服务时间的总和除以n。 输入:2个正整数n和s,表示有n个顾客且有s处可以提供顾客需要的服务。 * 接下来一行中有n个正整数,表式n个顾客需要的服务时间。 输出:最小的平均等待时间 * * @since jdk1.6 * @author 毛正吉 * @version 1.0 * @date 2010.06.08 * */ public class ManyBestService { /** * @param args */ public static void main(String[] args) { int n = 10; int s = 2; int[] a = { 56, 12, 1, 99, 1000, 234, 33, 55, 99, 812 }; double sum = manyBestService(n, s, a); System.out.println(sum); } /** * 求最小的平均等待时间 * * @param n * @param s * @param a * @return */ public static double manyBestService(int n, int s, int[] a) { double sum = 0.0; int[] a1 = new int[s]; int[] a2 = new int[n]; Arrays.sort(a); // 贪心策略:最短服务时间优先 int i = 0; int j = 0; while (i < n) { a1[j] += a[i]; // s1处服务时间累加 a2[i] = a1[j]; // 每个服务员的等待时间 i++; j++; if (j == s) { j = 0; } } for (i = 0; i < n; i++) { sum += a2[i]; } sum /= n; // 最小的平均等待时间 return sum; } }
5 楼
maozj
2010-06-10
各位Je朋友, 第19题是相当经典的一道题目,如果你有兴趣,可以好好模拟一下。。。
4 楼
maozj
2010-06-10
19. 多处最优服务次序问题。
package abstractandlogic; import java.util.Arrays; /** * 19. 多处最优服务次序问题。 设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti, 1<=i<=n。共有s处可以提供此项服务。应如何安排n个顾客的服务次序才能使 * 平均等待时间达到最小?平均等待时间是n个顾客等待服务时间的总和除以n。 输入:2个正整数n和s,表示有n个顾客且有s处可以提供顾客需要的服务。 * 接下来一行中有n个正整数,表式n个顾客需要的服务时间。 输出:最小的平均等待时间 * * @since jdk1.6 * @author 毛正吉 * @version 1.0 * @date 2010.06.08 * */ public class ManyBestService { /** * @param args */ public static void main(String[] args) { int n = 10; int s = 2; int[] a = { 56, 12, 1, 99, 1000, 234, 33, 55, 99, 812 }; double sum = manyBestService(n, s, a); System.out.println(sum); } /** * 求最小的平均等待时间 * @param n * @param s * @param a * @return */ public static double manyBestService(int n, int s, int[] a) { double sum = 0.0; int[] a1 = new int[s]; int[] a2 = new int[s]; Arrays.sort(a); // 贪心策略:最短服务时间优先 int i = 0; int j = 0; while (i < n) { a1[j] += a[i]; // s1处服务时间累加 a2[j] += a1[j]; // 总的服务时间累加 i++; j++; if (j == s) { j = 0; } } for (i = 0; i < s; i++) { sum += a2[i]; } sum /= n; // 最小的平均等待时间 return sum; } }
3 楼
maozj
2010-06-10
18.最优服务次序问题。
package abstractandlogic; import java.util.Arrays; /** * 18.最优服务次序问题。 设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti, 1<=i<=n。应如何安排n个顾客的服务次序才能使平均等待时间达到最小? * 平均等待时间是n个顾客等待服务时间的总和除以n。 input: 正整数n,表示n个顾客。 接下来一行输入n个正整数,表示n个顾客需要的服务时间。 * output:最小的平均等待时间 * * @since jdk1.6 * @author 毛正吉 * @version 1.0 * @date 2010.06.08 * */ public class BestService { /** * @param args */ public static void main(String[] args) { int n = 10; int[] a = { 56, 12, 1, 99, 1000, 234, 33, 55, 99, 812 }; double sum = bestService(a, n); System.out.println(sum); } /** * 计算最小的平均等待时间 * * @param a * @param n * @return */ public static double bestService(int[] a, int n) { double sum = 0.0; Arrays.sort(a); // 贪心策略:最短服务时间优先 for (int i = 1; i < n; i++) { a[i] += a[i - 1]; } for (int i = 0; i < n; i++) { sum += a[i]; } sum /= n; // 最小的平均等待时间 return sum; } }
2 楼
maozj
2010-06-09
17. 字符统计问题。
package abstractandlogic; import java.util.HashMap; import java.util.Map; /** * 17. 字符统计问题。 编写一个算法,统计在一个输入字符串中各个不同字符出现的频度。 * * @sincejdk1.6 * @author 毛正吉 * @version 1.0 * @date 2010.06.08 * */ public class CharacterFrequency { /** * @param args */ public static void main(String[] args) { characterFrequency("ab"); } /** * 统计不同字符出现的频度 * * @param s */ public static void characterFrequency(String s) { Map<Character, Integer> charMap = new HashMap<Character, Integer>(); if (s != null && !"".equals(s)) { char[] ch = s.toCharArray(); int len = ch.length; for (char c : ch) { if (charMap.containsKey(c)) { int i = charMap.get(c); i++; charMap.put(c, i); } else { charMap.put(c, 1); } } for (Map.Entry<Character, Integer> entry : charMap.entrySet()) { char c = entry.getKey(); int i = entry.getValue(); System.out.println(c + " : " + i); } } } }
1 楼
maozj
2010-06-08
20. 最优分解问题。
输出:
2 + 3 + 5 = 10
2 * 3 * 5 = 30
package boke.written; /** * 20. 最优分解问题。 设n是一个正整数。现在要求将n分解为若干互不相同的自然数之和,且使这些自然数的乘积最大。 * 贪心算法 * @since jdk1.5及其以上 * @author 毛正吉 * @version 1.0 * @date 2010.06.07 * */ public class DicompNumber { /** * @param args */ public static void main(String[] args) { int n = 10; dicomp(n); } public static void dicomp(int n) { int sum = 1; int sun = 0; int[] a = new int[n + 1]; int k = 1; if (n < 3) { a[1] = 0; return; } if (n < 5) { a[k] = 1; a[++k] = n - 1; return; } a[1] = 2; n -= 2; while (n > a[k]) { k++; a[k] = a[k - 1] + 1; n -= a[k]; } if (n == a[k]) { a[k]++; n--; } for (int i = 0; i < n; i++) { a[k - i]++; } // StringBuffer s = new StringBuffer(); StringBuffer b = new StringBuffer(); for (int i = 1; i < a.length; i++) { if (a[i] != 0) { sun += a[i]; sum *= a[i]; s.append(a[i] + " * "); b.append(a[i] + " + "); } } String ss = s.substring(0, s.length() - 3); String bb = b.substring(0, b.length() - 3); ss += " = "; bb += " = "; ss += sum + ""; bb += sun + ""; System.out.println(bb); System.out.println(ss); } }
输出:
2 + 3 + 5 = 10
2 * 3 * 5 = 30
发表评论
-
开散列的简单模拟(一)
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:47 13248. 数字迷问题。 A B C ... -
是否很久没抽象和逻辑了呢? 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.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:小技巧和任务
DoDo(兜兜)截屏缩放大师(豪华版)[V 7.0.0 免费]。 1、此版免费。 2、支持捐助。 详细介绍: 中国辽宁大连,鑫信软件全力打造的,经典大众软件之一。简单的说,就是截屏大师和缩放大师二合一软件。 ...
DoDo(兜兜)录音摄像大师(豪华版)。 1、此号版本免费。 2、支持购买捐助。 详细介绍: 中国辽宁大连,鑫信软件全力打造的,经典大众软件之一。简单的说,就是录音大师和摄像大师二合一软件 目前...
动物内容聚合站The DoDo:将萌宠进行到底.docx