AcWing 1050. 鸣人的影分身
原题链接
中等
作者:
摆神
,
2024-04-26 22:00:33
,
所有人可见
,
阅读 3
鸣人的影分身
递归
C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 25;
int t,n,m;
int f(int n,int m)
{
if(n == 0) return 1;
if(m == 0) return 0;
if(n < m) return f(n,n);
else{
return f(n-m,m) + f(n,m-1);
}
}
int main(void)
{
cin >> t;
while(t --){
cin >> n >> m;
cout << f(n,m) << endl;
}
return 0;
}
线性DP
算法1基础上的DP思考(非闰式DP法)
C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 25;
int t,n,m;
int f[N][N];
int main(void)
{
cin >> t;
while(t --)
{
cin >> n >> m;
for(int i = 0;i <= n;i ++)
for(int j = 0;j <= m;j ++){
if(i < j) f[i][j] = f[i][i];
if(i >= j) f[i][j] = f[i-j][j] + f[i][j-1];
if(j == 0) f[i][j] = 0;
if(i == 0) f[i][j] = 1;
}
cout << f[n][m] << endl;
}
return 0;
}
f[i][j] //i个苹果j个盘子总方案