鐵路購票系統的簡單座位分配演算法

2021-10-03 12:12:27 字數 1315 閱讀 4156

問題描述

請實現乙個鐵路購票系統的簡單座位分配演算法,來處理一節車廂的座位分配。

假設一節車廂有20排、每一排5個座位。為方便起見,我們用1到100來給所有的座位編號,第一排是1到5號,第二排是6到10號,依次類推,第20排是96到100號。

購票時,乙個人可能購一張或多張票,最多不超過5張。如果這幾張票可以安排在同一排編號相鄰的座位,則應該安排在編號最小的相鄰座位。否則應該安排在編號最小的幾個空座位中(不考慮是否相鄰)。

假設初始時車票全部未被購買,現在給了一些購票指令,請你處理這些指令。

輸入格式

輸入的第一行包含乙個整數n,表示購票指令的數量。

第二行包含n個整數,每個整數p在1到5之間,表示要購入的票數,相鄰的兩個數之間使用乙個空格分隔。

輸出格式

輸出n行,每行對應一條指令的處理結果。

對於購票指令p,輸出p張車票的編號,按從小到大排序。

樣例輸入

42 5 4 2

樣例輸出

1 26 7 8 9 10

11 12 13 14

3 4分析:先分配連續的座位,再分配離散的座位

這裡的remain陣列,賦初值5,一開始我用的是memset函式,但是memset是按位元組賦值,賦值會出錯。

因此,memset只能用來賦值如:0,true,false,inf = 0x3f3f3f3f(無窮大)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

intmain()

while

(n--

) remain[i]

-= p;

p =0;

break;}

}for

(int i =

1; i <=

20&& p; i++

) p -

= remain[i]

; remain[i]=0

;}else

remain[i]

-= p;

p =0;

}}}putchar

('\n');

}return0;

}

鐵路訂票系統的簡單設計

本文可以應對海量併發業務請求的問題思想的解答 其實鐵路訂票系統面臨的技術難點無非就是春運期間可能發生的海量併發業務請求。這個加上乙個排隊系統就可以輕易解決的。本來我在 weibo 上閒扯兩句,這麼簡單的方案,本以為大家一看就明白的。沒想到還是許多人有疑問。好吧,寫篇 blog 來解釋一下。簡單說,我...

乙個簡單的記憶體分配演算法

果然不到50行,果然可以在2小時上機寫完,管然面試讓15分鐘寫出來不過分 const int seg len 128 4 struct mem seg struct mem list mem seg head mem seg end mem list mem init char all mem,in...

作業系統 動態分割槽分配演算法的模擬

1.初始化功能 記憶體狀態設定為初始狀態。2.分配功能 要求至少使用兩種演算法,使用者可以選擇使用。3.功能 4.空閒塊的合併 即緊湊功能,用以消除碎片。當做碎片整理時,需要跟蹤分配的空間,修改其引用以保證引用的正確性。5.顯示當前記憶體的使用狀態,可以使用 或圖形。實現分配功能的4種演算法 1.最...