www.pudn.com > plan.rar > plan.cpp


#include  
 
#define pc(j) 20+5*j 
#define e(j) j 
 
void dp_plan(){ 
 int i,j,k,sum,limit,n,io,max_stock,max_production,d[10],x[10][100],z,z_maxlimit,z_minlimit,xstar[10]; 
 float f[10][100],temp; 
 printf("WELCOME TO THE DYNIMIC SYSTEM! periods of the inventory =?    "); 
 scanf("%d",&n); 
 printf(" the maximum stocks of each period=?   "); 
 scanf("%d",&max_stock); 
 printf(" the maximum production of each period=?   "); 
 scanf("%d",&max_production); 
 printf(" The stocks of the first period=?   "); 
 scanf("%d",&io); 
 for(i=0;i=0;i--) 
  {sum=0; 
  for(j=i;j0) 
    {z_minlimit=d[i]-k; 
    f[i][k]=pc(z_minlimit)+e(0)+f[i+1][0]; 
    x[i][k]=z_minlimit; 
    } 
   else 
    {z_minlimit=0; 
    f[i][k]=e(k-d[i])+f[i+1][k-d[i]]; 
    x[i][k]=0; 
    } 
   if(sum-k>max_stock+d[i]-k) 
    if(max_stock+d[i]-k>max_production) 
     z_maxlimit=max_production; 
    else 
     z_maxlimit=max_stock+d[i]-k; 
   else 
    if(sum-k>max_production) 
     z_maxlimit=max_production; 
    else 
     z_maxlimit=sum-k; 
   for(z=z_minlimit;z<=z_maxlimit;z++) 
    {temp=pc(z)+e(k+z-d[i])+f[i+1][k+z-d[i]]; 
    if(f[i][k]>temp) 
     {f[i][k]=temp; 
     x[i][k]=z; 
     } 
    } 
   } 
  } 
/* for(i=0;i%d ",f[i][j],x[i][j]); 
  getch(); 
 
  }*/ 
 printf(" The minimum policy cost for the %d periods is  %f",n,f[0][io]); 
 xstar[0]=x[0][io]; 
 j=io; 
 printf(" The optimal amount to produce in period 1 is  %d",xstar[0]); 
 for(i=1;i