• 大小: 2KB
    文件类型: .cpp
    金币: 2
    下载: 0 次
    发布日期: 2024-01-27
  • 语言: C/C++
  • 标签: 汽车  C++  动态规划  

资源简介

给定一个N*N 的方形网格,设其左上角为起点,坐标为(1,1),X 轴向右为正,Y 轴向下为正,每个方格边长为1。一辆汽车从起点出发驶向右下角终点,其坐标为(N,N)。 在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油。汽车在行驶过程中应遵守如下规则: (1)汽车只能沿网格边行驶,装满油后能行驶K 条网格边。出发时汽车已装满油,在起点与终点处不设油库。 (2)当汽车行驶经过一条网格边时,若其X 坐标或Y 坐标减小,则应付费用B,否则免付费用。 (3)汽车在行驶过程中遇油库则应加满油并付加油费用A。 (4)在需要时可在网格点处增设油库,并付增设油库费用C(不含加油费用A)。 (5)(1)~(4)中的各数N、K、A、B、C均为正整数。

资源截图

代码片段和文件信息

#include
#include

int main()
{     
int NKABC; 
    int work[100][100][12]map[100][100];  
int ijpqrmin;   
int s[4][3];  
FILE *fp*fw;
fp=fopen(“input.txt““r“);  
fscanf(fp“%d%d%d%d%d“&N&K&A&B&C);  
s[0][0]=-1;
s[0][1]=0;   
s[0][2]=0;   
s[1][0]=0;   
s[1][1]=-1;  
s[1][2]=0;    
s[2][0]=1;     
s[2][1]=0;    
s[2][2]=B;    
s[3][0]=0;    
s[3][1]=1;     
s[3][2]=B;     
for(i=0;i {        
for(j=0;j {           
fscanf(fp“%d“&map[i][j]);  
}    
}   
for(i=0;i    {      
for(j=0;j {    
for(p=0;p<=K+1;p++)  
{      
work[i][j][p]=1000000;    
}    
}    
}    
for(i=0;i<=K;i++)   
{      
work[0][0][i]=0; 
    }    
r=20; 
    while(r>0)  
{       
r=0;  
for(i=0;i {         
for(j=0;j {     
if(i!=0||j!=0)      
{              
for(p=0;p<=K;p++) 
                    {            
min=1000000;    
for(q=0;q<4;q++)     
{                 
if(i==0&&q==0) 
cont

评论

共有 条评论