输入
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
输出
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
样例输入复制
2 4 5 0
样例输出复制
2 4 6
-
- #include<stdio.h>
- int number(int n)
- {
- /*if (n == 1)
- {
- return 1;
- }*/
- if (n <= 3)
- {
- //return number(n - 1) + 1;
- return n;
- }
- else
- {
- return number(n - 1) + number(n - 3);
- }
- }
- int main()
- {
-
- int arr[1000]={0};
- int n = 0;
- int i = 0;
- scanf("%d", &n);
- while (n != 0)
- {
- arr[i] = n;
- i++;
- scanf("%d", &n);
- }
- for (i = 0; arr[i] != '\0'; i++) {
- printf("%d\n", number(arr[i]));
- }
- return 0;
- }
- #include<stdio.h>
- int main()
- {
-
- int arr[1000]={0};
- int n = 0;
- int i = 1;
- scanf("%d", &n);
- int max = n;
- while (n != 0)
- {
- arr[i] = n;
- i++;
- if (n >= max)
- {
- max = n;
- }
- scanf("%d", &n);
- }
-
- int number[1000] = { 0 };//对应年份牛的个数
- for (i = 1; i <= max; i++)
- {
- if (i <= 3)
- {
- number[i] = i;
- }
- else
- {
- number[i] = number[i - 1] + number[i - 3];
- }
- }
-
- for (i = 1; arr[i] != '\0'; i++)
- {
- printf("%d\n", number[arr[i]]);
- }
- return 0;
-
- }
来看看两个代码的速度(上面的是用 动态规划求解

显然 -----动态规划 ----还是 要快呀
快去用动态规划试试 斐波那契数列吧~!@#¥%……&*(