N[i]中四個值,begin,end,p,vnow,五個值也行,value為=(end-begin)*p。
1,不剪枝也能過。
2,如果剪枝,
根據回溯的過程,會先求到dfs(n)最后那個結點,再是dfs(n-1)..dfs(1)。
剪枝應當是在結構體中N[i]增加一個變量vnow,
vnow初值為0,記錄從該結點開始搜索所有int dfs(i)的返回值,并不斷更新使其最大,
當搜索到i的時候,如果N[i].vnow不為0,則需要滿足N[i].vnow+當前temp(前面的可行系列的總值)>vmax(所要求的最大值的當前值),若vnow為0,則可以不滿足這個條件,因為這是第一次。
根據回溯的過程,第一次求得的結果是dfs(n),接下來是dfs(n-1),接下來是dfs(n-2)-------最后dfs(0);
posted on 2009-07-25 22:27
luis 閱讀(255)
評論(0) 編輯 收藏 引用 所屬分類:
搜索