void main()
{? int maxdis,stcount,k,t,j=0,f=0; //maxdis最大行駛距離 stcount 加油站個數 f為標誌
int dis[1000]={0},ndis[1000]={0}; //dis數組存放每個車站間距離 ndis數組存放每次加油行駛距離 scanf("%d%d",&maxdis,&stcount); for(k=0;k<=stcount;k++)scanf("%d",&dis[k]);
for(k=0;k<=stcount;k++) //檢查是否有不能達到的車站if(maxdis<dis[k])
{ printf("No Solution!\n"); f=1;break;}
if(!f) { for(k=0,t=0;k<=stcount;k++) { t+=dis[k];? //將行駛距離組合到ndis中 if(t>maxdis) { t-=dis[k];ndis[j++]=t;
t=dis[k]; } }? for(k=0;;k++)? //統計加油次數 if(!ndis[k])? break; printf("n=%d\n",k); }?}