Նշանակենք F(i,j)-ով i-րդ տարվա վերջում j տարեկան կենդանիների քանակը: Ունենք` F(0,15)=1: Հիմա, ենթադրելով, որ կենդանիները ծնվում և մահանում են տարվա սկզբում,
ծնվածների քանակը (որոնք i-րդ տարվա վերջում դարձած են լինում 1 տարեկան).
F(i,1) = F(i-1,15) + F(i-1,16) + ... + F(i-1,34) (անցած տարվա վերջում 35 տարեկան եղածները մահացել են ու սերունդ այս տարի չեն տալիս)
մյուսների քանակները.
F(i,j) = F(i-1,j-1) (j = 2..35)
N-րդ տարվա վերջում էլ
Պատասխան = F(N,1) + F(N,2) + ... + F(N,35)
Կոդ:
#include <iostream>
using namespace std;
int F[2000][40], N;
int main()
{
cin >> N;
F[0][15] = 1;
for (int i = 1; i <= N; i++)
{
int s = 0;
for (int j = 15; j < 35; j++)
s += F[i - 1][j];
F[i][1] = s;
for (int j = 2; j <= 35; j++)
F[i][j] = F[i - 1][j - 1];
}
int ans = 0;
for (int i = 1; i <= 35; i++)
ans += F[N][i];
cout << ans << endl;
return 0;
}
Էջանիշներ