AcWing 1050. $\huge\color{orange}{DFS}$ $\large\color{purple}{or}$ $\huge\color{green}{DP}$
原题链接
中等
作者:
Value
,
2020-03-12 14:37:33
,
所有人可见
,
阅读 2231
暴力DFS!
#include <iostream>
using namespace std;
int m, n;
int res;
void dfs(int t, int start, int state){ //state 已经完成的分身 start下一个分身的值 t剩余的能量
if(state == n && t == 0) res ++;
if(state >= n) return ;
for(int i = start; i <= t; i ++ ){
dfs(t-i, i, state+1);
}
}
int main(){
int T; cin >> T;
while(T -- ){
cin >> m >> n;
res = 0;
dfs(m, 0, 0);
cout << res << endl;
}
return 0;
}
Dp
#include <iostream>
#include <cstring>
using namespace std;
const int N = 11;
int f[N][N];
int main(){
int T; cin >> T;
while(T -- ){
int m, n; cin >> m >> n;
memset(f, 0, sizeof f);
f[0][0] = 1;
for(int i = 0; i <= m; i ++ ){
for(int j = 1; j <= n; j ++ ){
f[i][j] = f[i][j-1];
if(i >= j) f[i][j] = f[i][j-1] + f[i-j][j];
}
}
cout << f[m][n] << endl;
}
return 0;
}
好干净的dfs
好优雅的
DFS
爆搜竟然能过。。我还想着怎么记忆化呢。。
### 感谢分享
暴搜太妙了
搜索nb,dp也nb
牛逼