題目描述:
小v在公司負責遊戲運營,今天收到款申請新上架的遊戲「跳一跳」。為了確保提供給廣大玩家朋友們的遊戲都是高品質的,按照運營流程小v必須對新遊戲進行全方位了解體驗和評估。這款遊戲的規則如下:
有n個盒子排成了一行,每個盒子上面有乙個數字a[i],表示在該盒子上的人最多能向右移動a[i]個盒子(比如當前所在盒子上的數字是3,則表示可以一次向右前進1個盒子,2個盒子或者3個盒子)。
現在小v從左邊第乙個盒子上開始體驗遊戲,請問最少需要移動幾次能到最後乙個盒子上?
輸入描述:
輸入:2 2 3 0 4
表示現在有5個盒子,上面的數字分別是2, 2, 3, 0, 4。
輸出描述:
輸出: 2
小v有兩種跳法:
跳法1:盒子1--盒子2--盒子3--盒子4--盒子5,共3下
跳法2:盒子1--盒子3--盒子5,共2下
跳法2的步驟數量最少,所以輸出最少步數:2。
輸入:2 2 3 0 4
輸出:核心**:
int jump(int a, int n)
return steps;
}
題目描述:
今年7月份vivo迎來了新入職的大學生,現在需要為每個新同事分配個工號。人力資源部同事小v設計了乙個方法為每個人進行排序並分配最終的工號,具體規則是:
將n (n<100000) 個人排成一排,從第1個人開始報數: 如果報數是m的倍數就出列,報到隊尾後則回到隊頭繼續報,直到所有人都出列;
最後按照出列順序為每個人依次分配工號。請你使用自己擅長的程式語言幫助小v實現此方法。
輸入描述:
輸入2個正整數,空格分隔,第乙個代表人數n,第二個代表m
輸出描述:
輸出乙個int陣列,每個資料表示原來在佇列中的位置用空格隔開,表示出列順序
輸入:6 3
輸出:3 6 4 2 5 1
這道題目就是簡單的約瑟夫環
核心**:
void loop(int n,int m)}}
if(i==(n-1))
}cout << endl;
}
題目描述:
小v最近在玩一款挖礦的遊戲, 該遊戲介紹如下:
1、每次可以挖到多個礦石,每個礦石的重量都不一樣,挖礦結束後需要通過一款平衡礦車運送下山;
2、平衡礦車有左右2個車廂,中間只有1個車輪沿著導軌滑到山下,且礦車只有在2個車廂重量完全相等且礦石數量相差不超過1個的情況下才能成功運送礦石,否則在轉彎時可能出現側翻。
假設小v挖到了n (n<100) 個礦石,每個礦石重量不超過100,為了確保一次性將n個礦石都運送出去,一旦礦車的車廂重量不一樣就需要購買配重砝碼。請問小v每次最少需要購買多少重量的砝碼呢? (假設車廂足夠放下這些礦石和砝碼,砝碼重量任選)
輸入描述:
輸入n個正整數表示每個礦石的重量
輸出描述:
輸出乙個正整數表示最少需要購買的砝碼重量
輸入:3 7 4 11 8 10
輸出:說明:
小v可以將重量3,7和11的礦石放到左車廂,重量4,8和10放到右車廂,然後購買重量為1的砝碼放到左車廂。
題解:其實可以轉換為求n個數分成兩半,使絕對值差就小,我們可以轉化為01揹包去做。
這個題目當時只過了差不多百分之八十,一直沒有搞懂原因,今天摘抄題目的時候才發現題目要求是礦石的數量最多相差為1,哭唧唧,現在貼的是提交的**,正確的之後再改吧!!!!
**:
void loop(int n, int weight)
2023年vivo提前批開發崗筆試
筆試共三道大題,不是很難,但是編譯器爛的要死,還不讓用本地編譯器。第一道題 輸入陣列a和陣列b,刪除陣列a中b中存在的元素!輸入描述 a b 輸出描述 class solution if flag false array1 k array1 i for int i 0 i k i cout arra...
2023年vivo提前批開發崗筆試
筆試共三道大題,不是很難,但是編譯器爛的要死,還不讓用本地編譯器。第一道題 輸入陣列a和陣列b,刪除陣列a中b中存在的元素!輸入描述 a b 輸出描述 class solution if flag false array1 k array1 i for int i 0 i k i cout arra...
vivo2019秋招筆試題 運礦石(01揹包)
給定n n 100 個數,每個數不超過100,你需要把n個數分成兩堆,兩堆個數相差最多為1,且兩堆的權值和之差最小,問最小的差是多少?01揹包,因為每個數不超過100,總和不超過10000,所以我們可以判斷每個和空間是否可以到達。dp j k 表示選擇了j個元素,此時和為k是否可行,這裡滾動了一維 ...