小易邀請你玩乙個數字遊戲,小易給你一系列的整數。你們倆使用這些整數玩遊戲。每次小易會任意說乙個數字出來,然後你需要從這一系列數字中選取一部分出來讓它們的和等於小易所說的數字。 例如: 如果是你有的一系列數,小易說的數字是11.你可以得到方案2+2+7 = 11.如果頑皮的小易想坑你,他說的數字是6,那麼你沒有辦法拼湊出和為6 現在小易給你n個數,讓你找出無法從n個數中選取部分求和的數字中的最小數。
輸入描述:
輸入第一行為數字個數n (n ≤ 20)
第二行為n個數xi (1 ≤ xi ≤ 100000)
輸出描述:
輸出最小不能由n個數選取求和組成的數
輸入例子:
3 5 1 2
輸出例子:
4 這是牛客網上一名同學的做法:
#include
#include
#include
using
namespace
std;
int main(void)
sort(nums.begin(), nums.end());
int sum = 0;
for (unsigned
int i = 0; i < nums.size(); ++i)
else
}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。
若有不對之處,敬請指正。
網易筆試 程式設計
1 一片1000 1000的草地,初始站在 1,1 最左上角 每一秒小易都會橫向或縱向到相鄰草地吃草 不會越界 反派超超手上有n個陷阱,第i個陷阱位置 xi,yi 小易一旦進陷阱就會 獲,為解救小易,請計算小易最少多少秒可能會走入乙個陷阱,提前提醒小易 輸入描述 第一行 n 超超的陷阱數 第二行 n...
網易筆試程式設計題
時間限制 1秒 空間限制 262144k 又到了豐收的季節,恰逢小易去牛牛的果園裡遊玩。牛牛常說他對整個果園的每個地方都瞭如指掌,小易不太相信,所以他想考考牛牛。在果園裡有n堆蘋果,每堆蘋果的數量為ai,小易希望知道從左往右數第x個蘋果是屬於哪一堆的。牛牛覺得這個問題太簡單,所以希望你來替他回答。輸...
網易筆試程式設計題 混合顏料
題目描述 你就是乙個畫家!你現在想繪製一幅畫,但是你現在沒有足夠顏色的顏料。為了讓問題簡單,我們用正整數表示不同顏色的顏料。你知道這幅畫需要的n種顏色的顏料,你現在可以去商店購買一些顏料,但是商店不能保證能 所有顏色的顏料,所以你需要自己混合一些顏料。混合兩種不一樣的顏色a和顏色b顏料可以產生 a ...