1. 程式人生 > >網易筆試程式設計-數字遊戲

網易筆試程式設計-數字遊戲

小易邀請你玩一個數字遊戲,小易給你一系列的整數。你們倆使用這些整數玩遊戲。每次小易會任意說一個數字出來,然後你需要從這一系列數字中選取一部分出來讓它們的和等於小易所說的數字。 例如: 如果{2,1,2,7}是你有的一系列數,小易說的數字是11.你可以得到方案2+2+7 = 11.如果頑皮的小易想坑你,他說的數字是6,那麼你沒有辦法拼湊出和為6 現在小易給你n個數,讓你找出無法從n個數中選取部分求和的數字中的最小數。
輸入描述:
輸入第一行為數字個數n (n ≤ 20)
第二行為n個數xi (1 ≤ xi ≤ 100000)
輸出描述:
輸出最小不能由n個數選取求和組成的數
輸入例子:
3
5 1 2
輸出例子:
4
這是牛客網上一名同學的做法:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(void)
{
    int n;
    cin >> n;
    vector<int> nums;
    while (n--)
    {
        int temp;
        cin >> temp;
        nums.push_back(temp);
    }
    sort(nums.begin(), nums.end());
    int
sum = 0; for (unsigned int i = 0; i < nums.size(); ++i) { if (nums[i] - sum > 1) { break; } else { sum += nums[i]; } } cout << sum + 1 << endl; }

我在這裡記錄下我的理解思路:
這個題目可以轉化為判斷一個數字序列是否是連續的,如果不是連續的,斷點在哪兒?證明如下:
假設有一系列數字a1,a2,a3,… ,an能自由組合成連續的0~kn個數,那麼a1, a2, a3, …, an, a(n+1)就能自由組合成連續的0 ~kn和a(n+1) ~kn + a(n + 1),若要證明0 ~ kn + a(n+1)是連續的,只要證明kn和a(n+1)是連續的,要想使kn和a(n+1)是連續的,只需要a(n+1) - kn <= 1即可。而這裡的kn是等於a1 + a2 + a3 +… + an的。如果沒有數字,當然能夠得到0~0個連續的數字,也就是說當沒有數字,kn為零時,假設成立,那隻需要滿足a(n+1) - kn <= 1即可得到任意連續的組合,也就是程式中所說的當
a(n + 1) - kn > 1時,a(n+1)和kn之間是不連續的,而不連續的最小數字就是kn+1。
若有不對之處,敬請指正。

相關推薦

筆試程式設計-數字遊戲

小易邀請你玩一個數字遊戲,小易給你一系列的整數。你們倆使用這些整數玩遊戲。每次小易會任意說一個數字出來,然後你需要從這一系列數字中選取一部分出來讓它們的和等於小易所說的數字。 例如: 如果{2,1,2,7}是你有的一系列數,小易說的數字是11.你可以得到方案2+

【Python】 筆試程式設計題(數字翻轉)

題目描述 如下是16年網易秋招的筆試程式設計題 對於一個整數X,定義操作rev(X)為將X按數位翻轉過來,並且去除掉前導0。例如: 如果 X = 123,則rev(X) = 321;如果 X =

筆試程式設計題:最多可放蛋糕數(C++)

題目: 二貨小易有一個W*H的網格盒子,網格的行編號為0~H-1,網格的列編號為0~W-1。每個格子至多可以放一塊蛋糕,任意兩塊蛋糕的歐幾里得距離不能等於2。 對於兩個格子座標(x1,y1

筆試 程式設計

1 一片1000*1000的草地,初始站在(1,1)(最左上角),每一秒小易都會橫向或縱向到相鄰草地吃草(不會越界),反派超超手上有n個陷阱,第i個陷阱位置(xi,yi),小易一旦進陷阱就會被捕獲,

筆試程式設計-Fibonacci數列

Fibonacci數列是這樣定義的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci數列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibon

全組合 筆試 數字遊戲

題目描述: 小易邀請你玩一個數字遊戲,小易給你一系列的整數。你們倆使用這些整數玩遊戲。每次小易會任意說一個數字出來,然後你需要從這一系列數字中選取一部分出來讓它們的和等於小易所說的數字。 例如: 如果{2,1,2,7}是你有的一系列數,小易說的數字是11.你可以得到方案2+

筆試

個數 進行 scanner ray 整數相除 logs div util tis 1.小易準備去魔法王國采購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩臺魔法機器可以通過投入x(x可以為0)個魔法幣產生更多的魔法幣。 魔法機器1:如果投入

筆試題目-2017-9-25

試題 pre ssi 不同 ring import bit imp ges 1 package demi; 2 3 import java.util.Arrays; 4 import java.util.Scanner; 5 6 public clas

筆試編程題:被3整除

整除 兩個 count div 整數 blog () 個性 system.in 小Q得到一個神奇的數列: 1, 12, 123,...12345678910,1234567891011...。 並且小Q對於能否被3整除這個性質很感興趣。 小Q現在希望你能幫他計算一下從數

專訪雲:數字企業九層之臺,起於“全棧雲”

“未來只有一種企業,就是數字企業”,網易雲在今年雲創大會上表示。但如何成為“數字企業”?網易雲給出了一系列自己的主張和全新的雲端計算產品:單叢集可支援5000物理節點的“瀚海”私有云,以及完整的微服務解決方案“輕舟”、工業智慧平臺等最新產品,並聯合浪潮推出首款雲端計算全棧一體機。 除了產品之外,

筆試題】遊戲卡牌

解題思路 首先測試樣例有錯誤,應該是 輸入 5 1 2 3 4 5 10 輸出 30 暴力解,找到所有和為m的求積。 import java.util.Scanne

面試一面【遊戲測試工程師】

1、自我介紹 2、多型 3、string變數可變不?為什麼? 4、 等價類和邊界值分析舉例(上次栽在等價類,這次栽在邊界值分析,我要滾回去看基礎....) 5、堆和棧?應用場景 6、drop刪除表。delete刪除表中的資料 7、寫SQL語句,分數表,姓名,分數,

2018[程式設計題] 字串碎片

時間限制:1秒 空間限制:32768K 一個由小寫字母組成的字串可以看成一些同一字母的最大碎片組成的。例如,"aaabbaaac"是由下面碎片組成的:'aaa','bb','c'。牛牛現在給

清晰解題: 筆試合唱團

閒言: 一切講解不清晰的演算法博文== 磨鍊讀者自學能力 題目: 合唱團(網易程式設計題) 有 n 個學生站成一排,每個學生有一個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘

筆試—按字典序為字串陣列排序

題目要求:字串由n個'a',m個'z'組成,對所有可能出現的字串按照字典序排列,找出第K個字串。 思路: 生成所有可能的字串陣列 對陣列排序 找出對應的第k個字串 sort(),陣列按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。 生成所

語言 猜數字遊戲

.版本 2 .程式集 視窗程式集_啟動視窗 .程式集變數 程式集隨機數, 整數型 .子程式 __啟動視窗_建立完畢 置隨機數種子 () 程式集隨機數 = 取隨機數 (0, 99) 輸出除錯文字 (程式集隨機數) .子程式 _按鈕_確定_被單擊 .' 如果 (到整數 (編輯框

2017遊戲·線上筆試程式設計題·第一題

題目描述: 目前有一款益智小遊戲,對經典的吃豆子游戲進行了改編。玩家將在類似如下圖中所示的網格地圖中進行遊戲,當玩家將所有的“豆子”吃完後,遊戲便結束。具體的遊戲規則如下: 1.玩家在遊戲開始後,出生在地圖的左上角,且面朝右側。 2

遊戲(雷火、盤古、伏羲)9月線下筆試真題(遊戲開發方向)

(一)填空選澤題,一空一分 1、兩個人輪流拋硬幣,先丟擲正面的贏,請問先拋的人贏的概率是________。 2、倘若你有一件武器,每使用一個材料,從1級到2級有90%概率成功,從2級到3級有80%,那麼從1級武器升到3級所需材料的數學期望是________。

互娛2017實習生招聘線上筆試第一場-1電子數字

http://hihocoder.com/contest/ntest2016spring1/problem/1 時間限制:10000ms  單點時限:1000ms  記憶體限制:256MB 描述 電子數字在生活中很常見,而許多的電子數字是由LED數

2016校招內推筆試程式設計

牛牛想嘗試一些新的料理,每個料理需要一些不同的材料,問完成所有的料理需要準備多少種不同的材料。 輸入描述: 每個輸入包含 1 個測試用例。每個測試用例的第 i 行,表示完成第 i 件料理需要哪些材料,各個材料用空格隔開,輸入只包含大寫英文字母和空格,輸入檔案不超過 50