赞
踩
2、假设已经得到了k1份,如果n-a小于(k-k1)*m(m为下一个要搜索的数),则不需要继续搜索下去。(强剪枝)
- #include
-
-
-
-
- #include
-
-
-
-
- #include
-
-
-
-
- #include
-
-
-
-
- #include
-
-
- #include
-
- #include
-
- using namespace std; int n, k, ans = 0; void dfs(int m, int k1, int a){ int i; if(a>n || k1>k) return; if(m>=n || k1 == k){ if(k1==k && a == n) ans++; return; } if(k1 == k-1 ){ // 剪枝 if(n-a >=m) ans ++; return; } if(n-a
-
- >n>>k; dfs(1, 0, 0); cout<
-
- <
-
-
-
-
-
-
-
-
-
-
-
-
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。