1. 程式人生 > >4歲開始升牛,9歲死----分支簡單演算法

4歲開始升牛,9歲死----分支簡單演算法

題意:有一個農場,第一年有一頭牛為1歲,隨後每年長一歲,到四歲的時候開始升牛,一年生一頭,生下來的牛為最初為1歲,等牛為9歲的時候,死亡;

分析:第一年的時候為1頭,我們利用一個二維c陣列,前端記錄第幾年 後端記錄每頭牛的年齡,我們一開始吧c陣列初始化為0,一旦碰見+1之後大於等於4的,向後擴一個位置,來記錄生下的那頭牛的年齡,while迴圈一直到後面陣列是0結束,大體思路就是那樣,細節方面這題很重要;

#include <cstdio>
#include <algorithm>
#include <iostream>
#include <string.h>
using namespace std;
int c[1001][1001];
const int INF = 100000000;
int main()
{
    int n;
    cin>>n;
    memset(c,0,sizeof(c));
    c[0][0]=1;
    for(int i=0; i<n-1; i++)
    {
        int j=0;
        int z=0;
        while(1)
        {
            int t1=i+1;
            c[t1][j]=c[i][z]+1;
            if(c[t1][j]>=4)
            {
                if(c[t1][j]>=9)
                    c[t1][j]=INF;//為啥輸出的時候不出現?
                else
                {
                    c[t1][j+1]+=1;
                    j+=2;
                }
            }
            else
                j++;
            if(c[i][z+1]==0)
                break;
            z+=1;
        }
    }
    int sum=0;
    for(int j=0; c[n-1][j]!=0; j++)
        if(c[n-1][j]!=INF&&c[n-1][j]>0)
            sum++;
    cout<<sum<<endl;
}

不懂得扣Q