动态规划算法设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法设计与分析实验报

决实际问题。

1、天平平衡问题:已知一个天平左右两端共有n个挂钩,且
有m个不同质量的钩码,求将钩码全部挂到钩子上使天平平衡
的方法的总数。

试设计求解该问题的动态规划算法。

2、数塔问题:对于诸如下图的数塔,若从顶层走到底层,每
一步只能走到相邻的结点,求经过的结点的数字之和最大的路
径。

试设计求解该问题的动态规划算法。

1.天平平衡问题的解题思路或算法思想:
1. 天平平衡问题的程序:
package com.t7;
public class Tianping{
public static void main(String[] args) {
int m = 27; //全部钩码的重量之和的二分之一,问题中的n
int n = 9; //钩码的数量,即题目中的m(个钩码)
int a[] = {10,9,8,7,6,5,4,3,2};
int h[] =new int[1001];
h[0]=1;
for (int i = 1; i <=n; i++) {
for (int j = m; j >=1; j--) {
if(j>=a[i-1]){
h[j]=h[j]+h[j-a[i-1]];
}
}
}
for (int j = 0; j <=m; j++)
System.out.print(h[j]+" ");
}
}
实例:
2. 数塔问题的程序:
package com.t4;
import java.util.Scanner;
public class Main
{
public static void main(String [] args){
System.out.print("输入数组的层数: ");
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();//定义数塔层数n;
int d[][]=new int[n][n];
System.out.print("输入数组元素:");
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i>=j)
d[i][j]=scan.nextInt();
}
}
int result = dataTower(d);
2)
实验心得体会:
实验成绩:指导教师:年月日。

相关文档
最新文档