标签:
1.建立数学模型来描述问题。
2.把求解的问题分成若干个子问题。
3.对每一子问题求解,得到子问题的局部最优解。
4.把子问题的解局部最优解合成原来解问题的一个解。
实现该算法的过程:
从问题的某一初始解出发;
while 能朝给定总目标前进一步 do
求出可行解的一个解元素;
由所有解元素组合成问题的一个可行解。
1 //找零钱算法 2 //输入:数组m,依次存放从大到小排列的面值数,n为需要找的钱数,单位全部为分 3 //输出:数组num,对照数组m中的面值存放不同面值的硬币的个数,就找钱方案 4 public static int[] zhaoqian(int m[],int n) 5 { 6 int k=m.length; 7 int[] num=new int[k]; 8 for(int i=0;i<k;i++) 9 { 10 num<i>=n/m<i>; 11 n=n%m<i>; 12 } 13 return num; 14 }
public class zhaoqian { public static void main(String[] args) { int m[]={25,10,5,1}; int n=99; int[] num=new int[m.length]; num=zhaoqian(m,n); System.out.println(n+"的找钱方案:"); for(int i=0;i<m.length;i++) System.out.println(num<i>+"枚"+m<i>+"面值"); } public static int[] zhaoqian(int m[],int n) { int k=m.length; int[] num=new int[k]; for(int i=0;i<k;i++) { num<i>=n/m<i>; n=n%m<i>; } return num; } }
标签:
原文地址:http://www.cnblogs.com/oumyye/p/4195643.html