Copy Books II - non-optimized version

Question

from lintcode
Given n books( the page number of each book is the same) and an array of integer with size k means k people to copy the book and the i th integer is the time i th person to copy one book). You must distribute the continuous id books to one people to copy. (You can give book A[1],A[2] to one people, but you cannot give book A[1], A[3] to one people, because book A[1] and A[3] is not continuous.) Return the number of smallest minutes need to copy all the books.
Example
Given n = 4, array A = [3,2,4], .

Return 4( First person spends 3 minutes to copy book 1, Second person spends 4 minutes to copy book 2 and 3, Third person spends 4 minutes to copy book 4. )

Idea

You can give arbitrary books to current person, and give the remained ones to next person... Try all possibilities by DFS search. Remember to cache some calculated results.

Note: This solution can only pass 65% of the test cases. I will update a better one later.

``java
/**

  • f(i, remain)

  • f represents the minimum time required to finish the remained books when starting from i-indexed person
    /
    public class Solution {
    /
    *

    • @param n: An integer

    • @param times: an array of integers

    • @return: an integer
      */
      public int copyBooksII(int numOfBooks, int[] times) {

      if (times.length == 0) return Integer.MAX_VALUE;
      if (numOfBooks == 0) return 0;

      this.times = times;
      this.computed = new int[times.length + 1][numOfBooks + 1];
      for (int i = 0; i < computed.length; i++)
      for (int j = 0; j < computed[0].length; j++)
      computed[i][j] = -1;
      return compute(0, numOfBooks);
      }

    private int[] times;

    private int[][] computed;

    private int compute(int i, int remainBooks) {
    if (i == times.length)
    return Integer.MAX_VALUE;
    if (this.computed[i][remainBooks] > 0)
    return this.computed[i][remainBooks];

    int minTime = Integer.MAX_VALUE;
    /**
     *  try each possible paths
     */
    for(int books = 0; books <= remainBooks; books++) {
        int consume = books * this.times[i];
        int minConsumeOfPath;
        if (books == remainBooks) {
            minConsumeOfPath = consume;
        } else {
            /**
             *  why Math.max?
             *  The shortest time was bounded by the person who consumes the most time
             */
            minConsumeOfPath = Math.max(consume, compute(i + 1, remainBooks - books));
        }
        minTime = Math.min(minTime, minConsumeOfPath);
    }
    
    this.computed[i][remainBooks] = minTime;
    return minTime;
    

    }
    }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喉童,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子暇藏,更是在濱河造成了極大的恐慌家乘,老刑警劉巖蜜暑,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卷玉,死亡現(xiàn)場(chǎng)離奇詭異丈牢,居然都是意外死亡没陡,警方通過(guò)查閱死者的電腦和手機(jī)蹲蒲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門番甩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人届搁,你說(shuō)我怎么就攤上這事缘薛。” “怎么了卡睦?”我有些...
    開(kāi)封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵宴胧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我表锻,道長(zhǎng)恕齐,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任瞬逊,我火速辦了婚禮显歧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘确镊。我一直安慰自己士骤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布蕾域。 她就那樣靜靜地躺著拷肌,像睡著了一般到旦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巨缘,一...
    開(kāi)封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天添忘,我揣著相機(jī)與錄音,去河邊找鬼若锁。 笑死搁骑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拴清。 我是一名探鬼主播靶病,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼口予!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起涕侈,我...
    開(kāi)封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤沪停,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后裳涛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體木张,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年端三,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了舷礼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡郊闯,死狀恐怖妻献,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情团赁,我是刑警寧澤育拨,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站欢摄,受9級(jí)特大地震影響熬丧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怀挠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一析蝴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绿淋,春花似錦闷畸、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春倘待,著一層夾襖步出監(jiān)牢的瞬間疮跑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工凸舵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祖娘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓啊奄,卻偏偏與公主長(zhǎng)得像渐苏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子菇夸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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