(演算法練習) 神奇的口袋

2021-10-02 05:26:03 字數 1182 閱讀 8092

要求:

這一題充分讓我覺得我只能寫簡單的遞迴(實際這個也不難,但我想的不是這樣的,就……寫不出來= =需要好好找找一些遞迴的**實現來看看)

**(參考大神的**寫的,也理解了(但為啥自己就想不到呢?))

#include

#include

int count,n,sum;

int record[21]

;void

search

(int index,

int sum)

if(index>=n)

return;if

(sum-record[index]

>=0)

search

(index+

1,sum);}

intmain()

count =0;

search(0

,40);

printf

("%d\n"

,count)

;memset

(record,0,

sizeof

(record));

}}

修改了一下寫了乙個sum累加的版本(對累加抱有執念= =)

#include

#include

int count,n,sum;

int record[21]

;//利用index自動往後加1找到邊界

void

search

(int index,

int sum)

if(index>=n)

if(sum + record[index]

<40)

//這裡的引數寫的sum系統才給通過,但在本地測試,寫search(index+1,0)也能得到答案,存疑

search

(index+

1,sum);}

intmain()

count =0;

//相當於sum初始就是為0

search(0

,0);

printf

("%d\n"

,count)

;memset

(record,0,

sizeof

(record));

}}

PAT練習 神奇的口袋

有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john...

演算法筆記 神奇的口袋

有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john...

神奇的口袋

原題 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,j...