給定n(n<=100)個數,每個數不超過100,你需要把n個數分成兩堆,兩堆個數相差最多為1,且兩堆的權值和之差最小,問最小的差是多少?
01揹包,因為每個數不超過100,總和不超過10000,所以我們可以判斷每個和空間是否可以到達。
dp[j][k]表示選擇了j個元素,此時和為k是否可行,這裡滾動了一維:本來是前i個元素中選擇j個,和為k是否可行,記憶體不夠所以進行滾動。
狀態設立完就清晰了,如果選擇weight[i]這個元素,那麼dp[j][k]轉移到dp[j+1][k+weight[i]],按照01揹包那樣列舉狀態就可以了。
#include #include #include #include #include using namespace std;
/*** welcome to vivo
*/#define max_num 110
int dp[max_num][20005];
int sum;
int now[max_num];
int solution(int n, int weight) }}
int ans=sum;
for(int i=sum/2;i>=0;i--)
}return ans;
}int main()
for(int i=1;i<=count;i++)
int result = solution(count, now);
cout << result << endl;
return 0;
}
vivo2023年 演算法崗筆試題
題目描述 小v在公司負責遊戲運營,今天收到款申請新上架的遊戲 跳一跳 為了確保提供給廣大玩家朋友們的遊戲都是高品質的,按照運營流程小v必須對新遊戲進行全方位了解體驗和評估。這款遊戲的規則如下 有n個盒子排成了一行,每個盒子上面有乙個數字a i 表示在該盒子上的人最多能向右移動a i 個盒子 比如當前...
2019vivo秋招提前批筆試題第3題
筆試的時候沒做出來,就順手截圖了。雖然知道要用動態規劃做,但我一直就不太懂動態規劃。筆試完又花了2小時把它做出來了。也不知道效能怎麼樣,但還好做出來了。def solution n,toltal money,until price,until hot 二維陣列,每一行代表0到total money每...
多益網路2019秋招筆試題
1 雜湊雜湊值的計算平均查詢長度 雜湊表的構造方法 4 除留餘數法 假設雜湊表長為 m,p為小於等於 m 的 最大數數,則雜湊 函式為 h k k p 5 偽隨機數為 採用乙個偽隨機函式作為雜湊函式,即 h key random key 雜湊表處理衝突的方法 1 開放定址法 2 再雜湊法 3 鏈位址...