簡單購買火車票問題

2021-09-11 01:45:56 字數 1768 閱讀 7791

我們省略了很多現實中購買火車票的細節,對於一趟列車,根據輸入的購票訂單資訊,查詢餘票並購票。

座位是復用的,即訂某段行程,只在該段行程內佔據乙個座位,在行程外不佔座位。舉個? :

某列車有青島、濟南、天津、北京四站(青島發往北京),有10個座位,則:

(1)訂購青島-天津車票1張,應先顯示有餘票10張,並執行購票操作;

(2)再訂天津-北京車票1張,顯示餘票10張,並執行購票操作;

(3)再訂濟南-天津車票9張,顯示餘票9張,並執行購票操作;

(4)再訂青島-天津車票1張,顯示餘票0張,並提示不能購票。

為簡化,售出的車票是不固定座位的,僅保證「有座位可以坐」。例如:一列僅有2個座位的青島-濟南-北京的列車,

乘客a先訂1張青島-濟南車票,可能佔據0號座位;

乘客b再訂1張濟南-北京車票,可能佔據1號座位(儘管有乙個好像更優化的方案是讓b佔據0號座位,但此題不需要考慮);

乘客c再訂1張青島-北京的車票,看上去沒有青島-北京的空座位(沒有票了),但是他可以在兩段行程分別坐在0號和1號座位,所以依然可以成功購票。

輸入格式:

第一行輸入站點數量n(n>1 且 n<=50)和座位數量s(正整數s<=200),中間空一格。

第二行輸入n個站點名稱(名稱僅由字母和數字組成,長度不超過30),以空格分隔,車站按照列車執行方向從起點至終點依次排列。

第三行輸入訂單數量m (正整數m<=50)

接下來m行,每行是乙個訂單,內容依次是 上車車站名 下車車站名 訂票數量,中間以空格分隔。

輸出格式:

對於每個訂單,在一行內給出訂票結果:先顯示該行程的餘票,然後列印「yes」或「no」表示購票成功或購票失敗。

輸入樣例:

4 10

qingdao jinan tianjin beijing

4qingdao tianjin 1

tianjin beijing 1

jinan tianjin 9

qingdao tianjin 1

輸出樣例:

10 yes

10 yes

9 yes

0 no

主要是思維,所以需要建立車站下標和座位數下標的乙個關係,這個可以用

c++的map來做。

重點是上車時需要買票,在坐火車的途中需要有票,在終點站不需要票(已經下車了),所以餘票的查詢區間是左閉右開的,第一次坐時就把區間寫成了兩邊都閉,所以出錯。

#include#includechar cz[50][35];

int zw[50];

int ncz,nzw;

char q[35];

char z[35];

int main()

int dd;

scanf("%d",&dd);

int p;

for(int i=0;i//查詢到站的下標

int x2;

for(int a=0;aint yp;

int min;

//在車站查詢餘票

//餘票為乘車區間(左閉右開)裡座位數的最小值

yp=zw[x1];

for(int k=x1;k//嘗試買票

for(int j=x1;j} //嘗試成功開始買票

for(int j=x1;j} if(pd)

printf("%d yes\n",yp);

else

printf("%d no\n",yp);

} return 0;

}

購買火車票攻略

今天早上7點起床,7點半開始登陸12306.cn,到八點7分的時候登進去了,但是一直無法預訂,直到8點15分了還是灰色的按鈕,再過了幾分鐘,我朋友說先選擇乙個以前的日期,然後再返回就可以了,我操作了,然後不知道怎麼回事,就被踢出來了。之後就再也沒登陸上。之後我就左手乙個手機,右手乙個手機,不停的撥打...

java購買火車票

題目要求 假設從a地到b地的火車票有硬座和硬臥,分別為100和190元。根據鐵路部門規定,未成年人 18周歲以下 身高不足120cm免票,120 含 150 不含 cm需半票,150及以上的需全票,未成年人臥鋪只能減免硬座的半價。請設計乙個購票程式,要求輸入年齡和身高 未 需要輸入 以及票的型別,輸...

火車票購買技巧

今年春節回家,買火車票實在是一言難盡,前後共計購買8張。有 票,也有平價票。通過各種不同渠道購買,特將購票過程的一些技巧總結如下 1 如果有訂票地點能夠訂票,可預先支付現金,讓訂票地點給訂票,該方式比較省心,但一般需要提前數天。2 到預售視窗購買,如果不是很著急,但是買到票以後就可以立即出發的可以在...