通过java程序编写数塔问题。寻找出对大指和相应的路径。
**import java.util.*;
public class test{
static int n;
static int d[][]={{8},{12,15},{3,9,6},{8,10,5,12},{16,4,18,10,9}};
static int DataTower(){
int Maxadd[][]=new int [n][n];
int path[][]=new int[n][n];
int i,j;
for(i=0;i<n;i++)
{
Maxadd[n-1][i]=d[n-1][i];
}
for(i=n-1;i>=0;i--)
{
for(j=0;j<=i-1;j++){
//Maxadd[i-1][j]=d[i-1][j]+Math.max(Maxadd[i][j], Maxadd[i][j+1]);
if(Maxadd[i][j]>Maxadd[i][j+1])
{
Maxadd[i-1][j]=Maxadd[i][j]+d[i-1][j];
path[i-1][j]=j;//本次决策所选择的j的下标
}
else
{
Maxadd[i-1][j]=Maxadd[i][j+1]+d[i-1][j];
path[i-1][j]=j+1;
}
}
}
System.out.println(d[0][0]);
j=path[0][0];//顶层决策选择下次决策j的下标,就是第几列
for(i=1;i<n;i++)
{
System.out.println(d[i][j]);
j=path[i][j];//每次都会更新一次j
}
return Maxadd[0][0];
}
public static void main(String args[]){
Scanner input=new Scanner(System.in);
n=input.nextInt();
//int d[][]={{8},{12,15},{3,9,6},{8,10,5,12},{16,4,18,10,9}};
System.out.println(DataTower());
}
}**