c語言上機扯蛋的母牛(n種演算法更新中)

來源:互聯網
上載者:User
  有一頭母牛,它每年初生一頭小母牛,每頭小母牛從第4年起,每年年初也生一頭小母牛.問在第20年時,牛的頭數共有多少?   問題有分歧 每頭小母牛從第4年起,每年年初也生一頭小母牛.   若結果為九百多頭,則是每頭小母牛從第4年起,第五年年初才開始生小牛   若結果為兩千多頭,則是每頭小母牛從第4年起,第四年年初就開始生小牛   我覺得 我個人理解為後者(屬於語文問題 可能我的語文一般 只能理解為後者)   所以一下演算法結果為兩千多頭 如果想按前者只需修改幾個代碼即可   方案一 對每個元素進行討論   #define N 3000   #include   /*當 a[i]=0 表示尚未出生 */   /*當 a[i]=1或2 表示出生年份 */   /*當 a[i]=3 表示具有繁殖能力*/   main ()   {    int i,y,total;    int t=0 , a[N] = {3};    for (y=1;y<=20;y++) /*對上一年的每頭牛進行檢驗*/    {    total = t + 1; /*total為上一年總數 每個數組元素代表每頭牛*/    for (i=0;i<=total-1;i++)    {    if ( a[i] == 3 ) /*若有繁殖能力產下小牛*/    { t++ ; a[t] = 1 ;} /*即開闢“新的元素” a[t]=1 */    else    a[i] = a[i] + 1; /*若無繁殖能力則"歲數+1"*/    }    }    printf ("%d",++t);    getchar();   }      方案二 新的一年的個數(第四年)=上一年積累部分(第三年)+增長部分(第一年)   遞推關係類 (簡單迴圈語句(2種)、數組、函數遞迴)僅舉例四種演算法   -------------------------------------------------------   # define LINE0 "at first,we can know :/n the 1st year's count= 2./n the 2nd year's count= 3./n the 3th year's count= 4./n.../n/nAnd then,you will know:.../n/n"   # define LINE "the %2dth year's count= %4d/n"   # include /*以下程式均使用相同的先行編譯處理*/   main()   {    int y1=2,y2=3,y3=4,y4,i;    printf(LINE0);    for (i=4;i<=20;i+=4)    {    y4=y3+y1;    y1=y4+y2;    y2=y3+y1;    y3=y4+y2;    printf( LINE, i ,y4);    printf( LINE, i+1,y1);    printf( LINE, i+2,y2);    printf( LINE, i+3,y3);    }    getchar();   }   -----------------------------------------------------   main()   {    int y1=2,y2=3,y3=4,y4,i;    printf(LINE0);    for (i=4;i<=20;i++)    {    y4=y3+y1;    y1=y2;    y2=y3;    y3=y4;    printf( LINE, i ,y4);    }    getchar();   }   ----------------------------------------------------   main()   {    int i, y[21] = {1,2,3,4};       printf (LINE0);    for (i=4;i<=20;i++)    {    y[i] = y[i-1]+y[i-3];    printf( LINE,i,y[i]);    }    getchar ();   }   --------------------------------------   int add(int n)   {    int temp;    if (n>3)    {    temp = add (n-1) + add (n-3);    return temp;    }    else    return n+1;   }   main()   {    int i;    printf (LINE0);    for (i=1;i<=20;i++)    {    printf( LINE,i,add(i));    }    getchar ();   }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.