杭电OJ2018-母牛的故事

来源:互联网 发布:python 反转二叉树 编辑:程序博客网 时间:2024/05/16 05:20
Problem Description
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?


Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。


Output
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。


Sample Input
2
4
5
0


Sample Output
2
4
6



我的代码:

#include <iostream>using namespace std;int main(){int n;int x[55][4]={1,0,0,0,1,1,0,0,1,1,1,0,1,1,1,1};//打表for(int i=4;i<=55;i++){x[i][0]=x[i-1][0]+x[i-1][1];x[i][1]=x[i-1][2];x[i][2]=x[i-1][3];x[i][3]=x[i][0];}while(cin>>n){if(n==0)break;cout<<x[n-1][0]+x[n-1][1]+x[n-1][2]+x[n-1][3]<<endl;}return 0;}



这道题我从去年做到今年,总觉得理解不了题意,我觉得题目有各种问题

于是我开始找规律(说多了都是泪

还就真让我发现规律了

第1年 m=1 z=0 z=0 z=0

第2年 m=1 z=1 z=0 z=0

第3年 m=1 z=1 z=1 z=0

第4年 m=1 z=1 z=1 z=1

第5年 m=2 z=1 z=1 z=2

第6年 m=3 z=1 z=2 z=3

第7年 m=4 z=5 z=3 z=4

我蠢一点,不会把长了四年的小母牛划到母牛的里面,于是把小母牛和母牛分开算

我的思路就是这样,虽然复杂了一点,好歹A过了

x[i][0]=x[i-1][0]+x[i-1][1];//母牛的数量等于前一年母牛的数量加上长了四年的小母牛的数量x[i][1]=x[i-1][2];//长了三年的小母牛的数量x[i][2]=x[i-1][3];//长了二年的小母牛的数量x[i][3]=x[i][0];//长了一年的小母牛数量取决于今年有多少母牛



0 0
原创粉丝点击