P1028 [NOIP2001 普及组] 数的计算 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
1.代码
#include<iostream>
using namespace std;
int main()
{
int a[1010];
int n;
cin >> n;
a[0] = 0;
a[1] = 1;
a[2] = 2;
for (int i = 3; i <=1010; i++)
{
a[i] = 2;
for (int j = 2; j <= i / 2; j++)
{
a[i] += a[j];
}
}
cout << a[n];
}
2.思路
dp动态规划,把前三项的数定好后,例如6/2=3,那就在原有的2(1,6||6)的基础上加上由2到3的所有数
P1192 台阶问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
1.代码
#include<iostream>
using namespace std;
int n, k;
int main()
{
cin >> n >> k;
int f[100000];
f[1] = f[0] = 1;
for (int i = 2; i <= n; i++)
{
f[i] = 0;
}
for (int i = 2; i <= n; i++)
{
for (int j = min(i, k); j >= 1; j--)
{
f[i] += f[i - j];
if (f[i] >= 100003)
{
f[i] %= 100003;
}
}
}
cout << f[n];
return 0;
}
2.思路
动态规划,把前两项规定好后,其他依次叠加即可