
算法设计与分析--JAVA
ITarmi
记录学习过程,分享所学知识。认识更多志同道合的同学
展开
-
背包问题-贪心算法-JAVA
问题描述:给定n种物品和一个背包。物品i的重量是Wi,其价值为Vi,背包的容量为C。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?1.贪心算法解决代码如下:package 算法设计与分析;import java.util.Collections;import java.util.Scanner;import java.util.Arrays;public class ...原创 2019-10-19 12:34:15 · 546 阅读 · 0 评论 -
虚拟汽车加油问题-贪心算法-JAVA
题目描述:一辆汽车加满油后可行驶n km。旅途中有k个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。1.贪心算法解决简单思路:为使加油次数最少,则每次开到尽量远的加油站加油。也就是说不得不加油的时候。如:到了一个加油站正好没油。到了一个加油站不加油,剩余油不够开到下一个加油站。代码如下:package 算法设计与分析;import java.util.Sca...原创 2019-10-19 09:36:54 · 1140 阅读 · 0 评论 -
最优服务次序问题-贪心算法-JAVA
问题描述:设有n个顾客同时等待一项服务,顾客i需要的服务时间为ti,1≤i≤n。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n个顾客等待服务时间的总和除以n。1.贪心算法解决代码如下:package 算法设计与分析;import java.lang.reflect.Array;import java.util.Arrays;import java.util....原创 2019-10-18 22:01:19 · 1401 阅读 · 3 评论 -
最大K乘积问题-(动态规划(JAVA),递归思想(C))
题目描述:设I是一个n位十进制整数。如果将I分割为k段,则可得到k个整数。这k个整数的乘积称为I的一个k乘积。试设计一个算法,对于给定的I和k,求出I的最大k乘积。代码如下:#include<stdio.h>#include<stdlib.h>#define max 100//用来求分割a后的前面部分,例如123,分割后1和23,z赋1;与下文对应int M(...原创 2019-10-12 10:35:29 · 1073 阅读 · 0 评论 -
石子合并问题-动态规划及简单算法-JAVA
问题描述:在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,合并的得分为这相邻两堆石子的数量之和。试设计算法,计算出将N堆石子合并成一堆的最小或最大得分。本题本要求使用动态规划来求解,但看到题目,觉得利用全排列,进行筛选也可以完成,后续可能会更新动态规划解法1.简单算法代码如下:package 算法设计与分析;import java...原创 2019-10-12 21:48:32 · 1461 阅读 · 0 评论 -
字典排序问题-算法设计与分析--java
2019年10月1日,恭祝祖国七十年华诞!我爱我国&家!!!题目描述:在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表A由26个小写字母组成。该字母表产生的升序字符串中字母从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1次。例如,a,b,ab,bc,xyz等字符串都是升序字符串。现在对字母表中产生的所有长度不超过6的升序字符串,计算它在字典中的编码。...原创 2019-10-01 16:40:56 · 209 阅读 · 0 评论 -
统计数字问题-JAVA
问题描述:一本书的页码从自然数1开始顺序编码直到自然数n,书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0,例如,第6页用数字6表示而不是06或006等。数字计数问题要求对给定书的总页码n,计算书的全部页码分别用到多少次数字0,1,2,3,4,5,6,7,8,9。输入数据由input.txt文件提供,数据输出到output.txt。代码如下:package 算法设计与分析;im...原创 2019-09-23 12:45:13 · 803 阅读 · 1 评论 -
Fibonacci数列-JAVA
题目描述:无穷数列1,1,2,3,5,8,13,21,34,55,……,称为Fibonacci数列。它可以递归地定义为:第n个Fibonacci数可递归地计算如下:int fibonacci(int n){if (n <= 1) return 1;return fibonacci(n-1)+fibonacci(n-2);}1.编写完整的主函数,分别记录利用上述递归函数求第47...原创 2019-09-23 16:24:34 · 730 阅读 · 0 评论 -
递归与尾递归的比较
递归程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。(百度百科)。举个列子,计算n!。 public static i...原创 2019-09-24 17:05:33 · 185 阅读 · 0 评论