日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

flight planning

發布時間:2024/5/15 编程问答 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flight planning 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  你的任務是寫一個程序來完成飛機的飛行計劃. 每一次飛行都可以被分為一系列的航段。你的程序必須對每一航段選出最佳的飛行高度,以最小化航程中需要消耗的燃料。
  飛機的空速是給定的,我們將用VCRUISE來描述。以及一個效果最佳的飛行高度AOPT(單位為英尺)。當飛機以海拔為AOPT的高度飛行時,每小時將消耗燃料GPHOPT加侖。如果飛機不在AOPT高度飛行,每低于或高于AOPT 1000英尺,每小時消耗的燃料就會額外增加GPHEXTRA加侖。飛機的起飛前的高度、降落后的高度均為0. 飛機的飛行高度每提升1000英尺,燃料就會消耗CLIMBCOST加侖(飛行高度下降是不需要消耗燃料的),為了簡化問題,我們認為飛機的飛行高度變化是瞬間完成的。以上的所有參數,在下表中給出:

  VCRUSITE 400 海里 / 小時
  AOPT 30,000 英尺
  GPHOPT 2000 加侖 / 小時
  GPHEXTRA 10 加侖 / 1000英尺
  CLIMBCOST 50 加侖 / 1000英尺

  每次飛行前,你都會得知每一航段的長度,以及每一航段的風速。風速并不是確定的,具體地說,它由飛機在該航段的飛行高度決定,并且是一個關于飛行高度的線性函數。例如,如果飛機的空速是400海里/小時,而風速是-50海里/小時時,飛機的實際對地速度就是350海里/小時。
  由于某些特殊的規定,飛機在每一航段的飛行高度必須在20,000英尺~40,000英尺之間,且必須是1000英尺的整數倍。你的程序需要在最小化消耗燃料的前提下,輸出每一航段的飛行高度,以及消耗的最少燃料。

輸入格式

  第一行一個整數N,表示有N組數據。
  對于每組數據,第一行包含一個整數K(K≤100),描述航段數量。
  接下來K行,每行3個整數A、B、C,分別描述該航段的長度(單位為海里)、在20,000英尺時的風速(單位為海里/小時)、在40,000英尺時的風速。

輸出格式

  對于每組數據,輸出一行,共k+1個整數。前k個整數分別描述每個航段的飛行高度(單位為1000英尺),最后一個整數描述消耗的最少燃料,由于答案有可能是實數,請對答案取上整后輸出。如果有多種方案滿足要求,請選擇字典序最小的方案(例如當 K = 2 時,有2種方案(30, 40) 和 (20, 30),則輸出(20, 30))。具體格式見樣例輸出。

樣例輸入

2
2
1500 -50 50
1000 0 0
3
1000 50 0
2000 0 20
1800 50 100

樣例輸出

Flight 1: 35 30 13986
Flight 2: 20 30 30 23502

數據規模和約定

  K≤100,A≤100,000,|B|、|C|≤100

#include<stdio.h> void print(int id,int hopt[][57],int K) {if(!K)return ;print(hopt[K][id],hopt,K-1);printf(" %d",id); } int main() {int VCRUSITE=400,AOPT=30,GPHOPT=2000,GPHEXTRA=10,CLIMBCOST=50;double hcons[57],relaVCRUSITE[57],min,wcamo;int minid;int i,j,k,o;double N,A,B,C;int K;double opt[157][57];int consopt[157][57];double noif,t;for(i=0;i<57;++i){hcons[i]=0;for(j=0;j<157;++j)opt[j][i]=0;}for(i=0;i<21;++i)hcons[AOPT+i]=hcons[AOPT-i]=2000+i*GPHEXTRA;scanf("%lf",&N);for(i=0;i<N;++i){scanf("%d",&K);for(j=1;j<K+1;++j){scanf("%lf %lf %lf",&A,&B,&C);relaVCRUSITE[20]=VCRUSITE+B;wcamo=(C-B)/20;for(k=21;k<41;++k)relaVCRUSITE[k]=relaVCRUSITE[k-1]+wcamo;for(k=20;k<41;++k){opt[j][k]=99999999;for(o=20;o<41;++o){noif=o<k?(k-o):0;noif+=((j-1)==0)*k;t=A/relaVCRUSITE[k]*hcons[k]+opt[j-1][o]+noif*CLIMBCOST;if(t<opt[j][k]){opt[j][k]=t;consopt[j][k]=o;}}}}min=opt[K][20];minid=20;for(j=21;j<41;++j)if(min>opt[K][j]){min=opt[K][j];minid=j;}printf("Flight %d:",i+1);print(minid,consopt,K);printf(" %d\n",(int)(min+1));}return 0; }

?

總結

以上是生活随笔為你收集整理的flight planning的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。