[問題] 判斷數字可否平均分配
請問一下
我遇到了一個題目是說讓使用者輸入一串數字,例如:
5 1 6 7 1 2
假設這些數字要分給兩個人,兩個人拿到的數字總和要一樣大
如果可以讓兩個人拿到的一樣多,那這題就成立,否則不成立
所以上面的例題的解答為成立,分別為5+6跟1+7+1+2
如果使用者輸入的是10 1 2 9 3
則程式輸出不成立,因為並沒有辦法平均分配給兩個人
======================================
這題已經想好久了,可是都解不出來
不曉得有沒有高手可以給予提示的?
目前我的方法是先判斷總和是否是偶數,不是偶數的話就直接顯示不成立
例如5 1 6 7 1 2的總和為22,是偶數的話就把他除2也就是11
接著就是去跑雙層for迴圈來判斷是否有哪些數字相加後可以等於11
如果等於11的話那就顯示成立,可是這個for迴圈一直寫不出來,
想請問各位是否有其他的方法?謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.124.132.57
→
10/31 01:04, , 1F
10/31 01:04, 1F
推
10/31 01:05, , 2F
10/31 01:05, 2F
推
10/31 01:06, , 3F
10/31 01:06, 3F
推
10/31 01:12, , 4F
10/31 01:12, 4F
推
10/31 02:14, , 5F
10/31 02:14, 5F
推
10/31 08:58, , 6F
10/31 08:58, 6F
→
10/31 08:58, , 7F
10/31 08:58, 7F
推
10/31 09:08, , 8F
10/31 09:08, 8F
推
10/31 09:27, , 9F
10/31 09:27, 9F
推
10/31 09:29, , 10F
10/31 09:29, 10F
→
10/31 09:29, , 11F
10/31 09:29, 11F
→
10/31 09:29, , 12F
10/31 09:29, 12F
→
10/31 09:30, , 13F
10/31 09:30, 13F
→
10/31 09:30, , 14F
10/31 09:30, 14F
→
10/31 09:31, , 15F
10/31 09:31, 15F
推
10/31 14:12, , 16F
10/31 14:12, 16F
→
10/31 14:12, , 17F
10/31 14:12, 17F
→
10/31 14:52, , 18F
10/31 14:52, 18F
→
10/31 14:58, , 19F
10/31 14:58, 19F
→
10/31 15:00, , 20F
10/31 15:00, 20F
推
10/31 15:42, , 21F
10/31 15:42, 21F
→
10/31 15:43, , 22F
10/31 15:43, 22F
→
10/31 15:43, , 23F
10/31 15:43, 23F
→
10/31 15:44, , 24F
10/31 15:44, 24F
請問你的意思是像這樣嗎?
int n=6
int input[n]={5,1,6,7,1,2}
int sum=5+1+6+7+1+2 //總和22
int half_sum=sum/2 //一半11
bool dp[sum]={false};
dp[0]=true;
for(int i=0;i<n;++i)
for(int j=max;j>0;++j)
if(dp[i])
dp[ i + input[j] ] = true;
可是if(dp[i]) i是0,第0個位置為true
所以把 dp[ i + input[j]] 也就是dp[ 0 + input[22]]的位置改為true
可是input的範圍只有0~5不是嗎@@?
※ 編輯: yoll522 來自: 120.124.132.57 (10/31 16:39)
推
10/31 16:57, , 25F
10/31 16:57, 25F
→
10/31 16:58, , 26F
10/31 16:58, 26F
推
10/31 17:00, , 27F
10/31 17:00, 27F
→
10/31 17:01, , 28F
10/31 17:01, 28F
推
10/31 18:32, , 29F
10/31 18:32, 29F
→
10/31 22:17, , 30F
10/31 22:17, 30F