某种传染病第一天只有一个患者,前五天为潜伏期,不发作也不会传染人
第6天开始发作,从发作到治愈需要5天时间,期间每天传染3个人
求第N天共有多少患者
解题的思路是这样的:
1、1-5天,0个人被传染,6-10天有15个人(也就是一天3)
2、第11天,被传染的人数应该是从第2天到6天被传染的人数加乘3
3、第N天,被传染的人数是第N-9到N-9+4天人数的和乘3
4、所以我们只要把(1,N-1)每天被传染的人数保存此来就可以通过公式算出第N天人数,然后从1加到N。
public static long SickMen(long N)
{
long count = 0;
long[] M = new long[N];
if (N <= 5 && N > 0)
return 1;
for (long i = 5; i < 10; i++)
{
if (i < N)
M[i] = 3;
}
if (N >= 10)
{
for (long j = 10; j < N; j++)
{
long temp = 0;
long length = j – 9;
for (long l = 0; l < 5; l++)
temp += M[length + l];
M[j] = temp * 3;
}
}
for (long q = 0; q < N; q++)
count += M[q];
return count;
}