4歲開始升牛,9歲死----分支簡單演算法
阿新 • • 發佈:2018-12-07
題意:有一個農場,第一年有一頭牛為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