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 阅读(243)
评论(0) 编辑 收藏 引用 所属分类:
搜索