16級第四周寒假作業A題

2022-09-06 01:45:08 字數 1380 閱讀 8337

timelimit:1000ms  memorylimit:256mb

64-bit integer io format:%i64d

problem description

有一天,t^t來到了師大比賽,看上了師大的acmer小彩,於是他就跑上去想跟人家搭訕,可是呢,這時候,小彩遇到了乙個問題,小彩說,你要是幫我解決了這個

問題,我就把我的手機號給你,t^t一聽,頓時樂了起來,這不是我的強項嘛,於是就讓小彩說了:

給定整數a1,a2,....,an,判斷是否可以從中選出若干數(取數的數目 > 0),使它們的和恰好為k

input

輸入有多組資料,輸入的第一行有兩個數,分別為n,k(1 <= n <= 20,-10^8 <= k <= 10^8,不考慮k = 0的情況);

第二行是n個數,分別是a1,a2,a3,...,an(-10^8 <= ai <= 10^8)

output

能找到這樣的若干個數的和為k(由於oj無法特判,因此輸入保證只有一組這樣的數),則輸出yes,並且按照順序輸出這些數,否則的話,輸出no

sampleinput

4 13

1 2 4 7

4 15

1 2 4 7

sampleoutput

yes

2 4 7

no思路:這一題其實就是入門的搜尋題。進入正題,我們先用sum來記錄這些數的和,用陣列來存給定的n個數,顯然,一開始的時候,sum的值為0.然後我們考慮給定的這n個數,對於每個

數,只有兩種狀態,要麼取這個數,要麼不取,因為n<=20,我們就直接遍歷所有的狀態,因為只有兩種狀態,所以素有狀態所形成的就是二叉樹,如下圖所示

(我就不畫出所有的狀態了)

在暴力遍歷所有的狀態之後,當匹配到sum=k的時候,我們就返回根節點,在返回根節點的時候我們就用棧儲存符合條件的數,以便於我們有序的輸出。

然後就是進行剪枝操作,比如當sum>k的時候,我們就可以略過該節點,以免進行不必要的操作;

大致的內容就是這樣,放出我的dfs**給大家作為參考,具體的可以看我**上的注釋

1

bool dfs(int i,int sum)//

i表示的是當前考慮的是哪個數,sum表示當前的和212

if(dfs(i+1,sum))//

不加上a[i]的情況

13return

true;14

return

false

;15 }

view code

(寒假??)作業四

dark existed z 悟空 新增多種語言 之後增加語言時不可通過修改原始碼 重編譯 實現 通過對txt檔案進行讀取 實現不同的語言 不同txt檔案中每一行的意思相對應 如需新增語言時 只需要修改txt檔案 void languagelist file.close 在對應的地方輸出langua...

16級第一周寒假作業H題

timelimit 1000ms memorylimit 128000kb 64 bit integer io format lld problem description 漲姿勢題就是所謂的優化題,在組隊賽中,隊伍發現了一題水題,那麼應該交給誰去處理?作為處理水題的 手,應該具備什麼樣的素養?1,...

16級第一周寒假作業B題

timelimit 4000ms memorylimit 128mb 64 bit integer io format i64d problem description 已知在二維空間中有n個點,p0,p1 pn 1 已按照x為第一優先順序,y為第二優先順序從大到小排好序 即若 pi則pi.x in...