221
windows
WIKIOI-1059 汽車裝油
1059 汽車裝油
題目描述 Description
設在一環行公路上有N個汽車站,每一站存有若幹數量的汽油(其中有的站可能不存)。現在使一輛原來沒有油的汽車從某站依反時針方向沿公路行駛,車站編號為反時針;每到一站即把該站的汽油全部帶上(出發的站也如此)。試求從哪幾站出發可以使汽車從該站出發環行一周,不致在中途因缺油而停車。
輸入描述 Input Description
輸入:輸入文件第一行有一個N(站點數N<1000), 第二行有N個數字m1 m2 …… mn,數字間用空格作分隔符(mi描述第I站的存油數,mi≤100), 第三行有N個數字w1 w2 …… wn,數字間用空格作分隔符(wi描述第I站至第I+1站汽車耗油量,wn描述第n站至第1站的耗油量,wi≤100)。
輸出描述 Output Description
輸出:在一行中按站點編號由小到大輸出可出發站點編號(中間用一個空格分隔)。若不存在可出發站點,則輸出“No Result!”。
樣例輸入 Sample Input
5
2 3 4 5 3
3 2 1 5 4
樣例輸出 Sample Output
2 3
AC代碼:
#include<stdio.h> #include<algorithm> using namespace std; int w[2000],v[2000]; int Fun(int x,int n,int sum,int num) { while(num<n) { sum+=w[x]; sum-=v[x]; if(sum<0) break; if(x+1==n) {x=0;num++;} else {x++;num++;} //printf("sum=%d num=%d\n",sum,num); } if(num==n) return 1; else return 0; } int main() { int i,n,sum=0,aws[2000],k=0; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&w[i]); for(i=0;i<n;i++) scanf("%d",&v[i]); for(i=0;i<n;i++) { //printf("i==%d:\n",i); if(Fun(i,n,0,0)==1) aws[k++]=i+1; } sort(aws,aws+k); if(k!=0) { printf("%d",aws[0]); for(i=1;i<k;i++) printf(" %d",aws[i]); puts(""); } else printf("No Result!\n"); return 0; }
最後更新:2017-04-03 12:55:52