火車票問題(2016CCF)

問題描述

請實(shí)現(xiàn)一個(gè)鐵路購票系統(tǒng)的簡單座位分配算法,來處理一節(jié)車廂的座位分配辟狈。

  假設(shè)一節(jié)車廂有20排遏考、每一排5個(gè)座位立润。為方便起見,我們用1到100來給所有的座位編號,第一排是1到5號,第二排

  是6到10號,依次類推,第20排是96到100號喊儡。

  購票時(shí),一個(gè)人可能購一張或多張票,最多不超過5張输瓜。如果這幾張票可以安排在同一排編號相鄰的座位,則應(yīng)該安

  排在編號最小的相鄰座位。否則應(yīng)該安排在編號最小的幾個(gè)空座位中(不考慮是否相鄰)猿规。

  假設(shè)初始時(shí)車票全部未被購買,現(xiàn)在給了一些購票指令,請你處理這些指令。

輸入格式

輸入的第一行包含一個(gè)整數(shù)n,表示購票指令的數(shù)量宙橱。

  第二行包含n個(gè)整數(shù),每個(gè)整數(shù)p在1到5之間,表示要購入的票數(shù),相鄰的兩個(gè)數(shù)之間使用一個(gè)空格分隔姨俩。

輸出格式

輸出n行,每行對應(yīng)一條指令的處理結(jié)果。

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

樣例輸入

4

  2 5 4 2

樣例輸出

1 2

  6 7 8 9 10

  11 12 13 14

  3 4

樣例說明

  1. 購2張票,得到座位1师郑、2环葵。
   2) 購5張票,得到座位6至10。

   3) 購4張票,得到座位11至14宝冕。

   4) 購2張票,得到座位3张遭、4。

評測用例規(guī)模與約定

對于所有評測用例,1 ≤ n ≤ 100,所有購票數(shù)量之和不超過100地梨。


思路解析

思路一:因?yàn)樵摴?jié)車廂有20排菊卷,每排5個(gè)缔恳,所以很容易想到建立一個(gè)名為zw, 20 × 5 的數(shù)組洁闰,如果座位上已經(jīng)有人了歉甚,則置“該座位”的值為1,即讓zw[i][j]=1(座位號為 i5+j+1* 上面已經(jīng)有人了);

思路二:我們?nèi)绻O(shè)置一個(gè) 20 * 6 的數(shù)組,每行多出來的一個(gè)位置用來存放該行剩余的空座位

比較:第一種思路實(shí)現(xiàn)起來比較繁瑣扑眉,而且效率低于第二種纸泄。因?yàn)槿绻阍O(shè)置 20 * 5 的數(shù)組,則每次分配座位的時(shí)候腰素,都要從第0排的第0個(gè)位置開始掃描聘裁,即要兩個(gè)for循環(huán),在內(nèi)循環(huán)中還要實(shí)現(xiàn)if(zw[i][j]==0),即若等于9,則說明該座位空弓千,即要統(tǒng)計(jì)出該行的空余位置衡便,然后再決定是否分配;第二種思路相對于第一種思路減少了統(tǒng)計(jì)該行空余位置的步驟,因?yàn)槲覀円呀?jīng)在數(shù)組中記錄下來了计呈,這樣實(shí)現(xiàn)簡單砰诵,方便。

注:

  1. 我們要把題目理解透徹捌显,據(jù)題意而知茁彭,不可能出現(xiàn) |0|1|1|0|0| 的情況;**

  2. 要注意數(shù)組下標(biāo)和座位號之間的關(guān)系,每行數(shù)組下標(biāo)是從0開始扶歪,每行座位下標(biāo)是從1開始

源碼


package Second;

/**
 * Created by fxr on 16-9-12.
 */

import java.util.Scanner;


public class Test {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int count[] = new int[100];
        for (int i = 0; i < N; i++) {
            count[i] = sc.nextInt();
        }

        int zw[][] = new int[20][6];
        for (int i = 0; i < zw.length; i++) {
            zw[i][5] = 5;
        }

        for (int i = 0; i < N; i++) {
            int temp = count[i];
            boolean flag = false;//記錄連續(xù)分配是否成功
            for (int j = 0; j < zw.length; j++) {
                int res = zw[j][5];//記錄該行的剩余空位
                if (res >= temp) {
                    int start = 5 - res;//記錄從該行的什么位置開始分配
                    zw[j][5] -= count[i];
                    flag = true;
                    for (int k = start; k < start + count[i]; k++) {
                        System.out.print(j * 5 + k + 1 + " ");
                    }
                    System.out.println();
                    break;
                }
            }
            if (!flag) {//記錄連續(xù)分配未成功
                for (int j = 0; j < zw.length; j++) {
                    int res = zw[j][5];
                    if (res > 0) {
                        System.out.print(j * 5 + 5 - res + 1 + " ");
                        zw[j][5 - res] = 1;
                        zw[j][5] -= temp;
                        temp--;
                    }
                    if(temp==0){
                        break;
                    }
                }
                System.out.println();
            }
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末理肺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子善镰,更是在濱河造成了極大的恐慌妹萨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炫欺,死亡現(xiàn)場離奇詭異乎完,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)品洛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門树姨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桥状,你說我怎么就攤上這事帽揪。” “怎么了辅斟?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵转晰,是天一觀的道長。 經(jīng)常有香客問我,道長查邢,這世上最難降的妖魔是什么蔗崎? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮侠坎,結(jié)果婚禮上蚁趁,老公的妹妹穿的比我還像新娘。我一直安慰自己实胸,他們只是感情好他嫡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著庐完,像睡著了一般钢属。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上门躯,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天淆党,我揣著相機(jī)與錄音,去河邊找鬼讶凉。 笑死染乌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的懂讯。 我是一名探鬼主播荷憋,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼褐望!你這毒婦竟也來了勒庄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瘫里,失蹤者是張志新(化名)和其女友劉穎实蔽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谨读,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡局装,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了劳殖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贼邓。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖闷尿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情女坑,我是刑警寧澤填具,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響劳景,放射性物質(zhì)發(fā)生泄漏誉简。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一盟广、第九天 我趴在偏房一處隱蔽的房頂上張望闷串。 院中可真熱鬧,春花似錦筋量、人聲如沸烹吵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肋拔。三九已至,卻和暖如春呀酸,著一層夾襖步出監(jiān)牢的瞬間凉蜂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工性誉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留窿吩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓错览,卻偏偏與公主長得像纫雁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蝗砾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 數(shù)組在程序設(shè)計(jì)中先较,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來悼粮。這些按序排列的同類數(shù)據(jù)元素的集合稱...
    朱森閱讀 3,931評論 2 13
  • 標(biāo)簽(空格分隔): 算法 C++ 筆試 第三題:描述小王最近在開發(fā)一種新的游戲引擎闲勺,但是最近遇到了性能瓶頸。于是他...
  • 樹形動態(tài)規(guī)劃扣猫,顧名思義就是樹+DP菜循,先分別回顧一下基本內(nèi)容吧:動態(tài)規(guī)劃:問題可以分解成若干相互聯(lián)系的階段,在每一個(gè)...
    Mr_chong閱讀 1,486評論 0 2
  • 轉(zhuǎn)圈游戲 題目 n 個(gè)小伙伴(編號從 0 到 n-1)圍坐一圈玩游戲申尤。按照順時(shí)針方向給 n 個(gè)位置編號癌幕,從0 到 ...
    bbqub閱讀 399評論 0 0
  • 春暖花開,洛城游人如織昧穿,人人稱贊:“唯有牡丹真國色勺远,花開時(shí)節(jié)動京城”。我卻想起了故鄉(xiāng)路旁的蒲公英时鸵,與花中之王的牡丹...
    空靈心閱讀 296評論 0 2