• 大小: 1KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: Java
  • 标签: 投资问题  

资源简介

关于动态规划投资问题的Java代码实现,帮助了解具体算法的实现过程

资源截图

代码片段和文件信息

package 投资动态规划;

public class Investment {
public static void main(String[] args) {
// TODO Auto-generated method stub
int f[][]={{0000}
           {110220}
           {1251021}
           {13103022}
           {14153223}
           {15204024}};

int []q=Investment2(f54);



//测试f[][]输出 ,观察下标
for(int i=0;i {
for(int j=0;j {

System.out.print(“f[“+i+“][“+j+“]=“+ f[i][j]+“\t“);


}
System.out.println();
}
System.out.println();
//测试向量输出

for(int i=0;i {
System.out.println(“第“+(i+1)+“个项目投:“+q[i]+“万元     “);
}


}

static int [] Investment2(int [][]fint mint n)
{
//m=5n=4
int [][]F=new int[m+1][n];//F[6][4]
int [][]s=new int[m+1][n];

//计算F[][]
for(int k=1;k<=n;k++)//投资项目 (0->3) 变成 (1->4)
{
for(int x=1;x<=m+1;x++)//投资钱数 (0->5)
{
if(k==1)
{
F[x-1][k-1]=f[x-1][k-1];
s[x-1][k-1]=x-1;
}
else
{
F[x-1][k-1]=F[x-1][k-2];//把 (0,i)放到F的第k-1列
for(int i=1;i<=x;i++)//x(1->5)
{
int t=f[i-1][k-1]+F[x-i][k-2];

if(t>F[x-1][k-1])
{
F[x-1][k-1]=t;
s[x-1][k-1]=i-1;
}
}
}
}
}

//计算返回的q向量
int []q=new int [m+1];
for(int i=0;i {
int q1=F[i][n-1];
q[i]=q1;

}
int t=Max(q);//找到最后一列的最大值

int []p=new int [n];//最后返回的向量每个项目的投资数

for(int j=n-1;j>=0;j--)
{
int o=s[t][j];
p[j]=o;
t=t-o;
}




       //F[][]和s[][]测试输出
for(int i=0;i {
for(int j=0;j {
System.out.print(“F[“+i+“][“+j+“]=“+ F[i][j]+“ “+s[i][j]+“\t“);
}
System.out.println();
}
System.out.println();
return p;
}


static public int Max(int[] m)//X找最大值返回下标X  ->应该重全部二维数组来找
{
int max=m[0];
int t=0;
for(int i=1;i {
if(max {
max=m[i];
t=i;
}
}
return t;
}
}






 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2214  2017-11-11 10:43  Investment.java

----------- ---------  ---------- -----  ----

                 2214                    1


评论

共有 条评论

相关资源