算法——猴子分桃


  想做些有關“算法”的練習題,在網上無意間看到了一道很經典的算法題——猴子分桃,於是百度了一下,才發現這道題的相關文檔很多很多,但最多的也就是使用C++或者Java來解決這道題,而自己也是初次接觸C++。

1.先介紹一下C++使用最常見的編輯器——dev cpp.附上下載地址:(http://bloodshed-dev-c.en.softonic.com/download);

2.

3.接着選好所要下載好的地址;

4.剩下的事情就是“一路默認”,直至安裝完成。

然后就剩啟動Dev C++,啟動完Dev c++后,就先新建一個項目吧:可以按ctrl+N或者直接點“文件”——“新建”——“源代碼”;待你寫好代碼,然后就需要

 

點擊運行之后,先選擇“運行”——“編譯”——“運行”或者直接點擊“運行”——“編譯運行”就可以運行項目了。

還有一種新建項目的方法:

“文件”——“新建”——“工程”,然后按上圖選擇Console Application,再寫好文件名即可。運行方法同上。只是首次在運行C++代碼時,居然出現了“閃屏”的現象,最后原來是在return 0之前加上一句“ system("PAUSE"); ”,,,,,有的時候加上“getchar();”貌似也可以使程序正常運行。(兩者的區別,我也不太懂。。。。)

附上C++的第一道算法題:

  

    /**海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只 * 猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 * 一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的, 問海灘上原來最少有多少個桃子?**/

運行C++代碼:

 #include <stdio.h>
 #include <stdlib.h>
 
 int monkey_peach(int n)
 {
     int *p;
     int i;
 
     p = (int *)malloc(n * sizeof(int));
     if (p == NULL)
         return -1;
 
     p[0] = 1;
 
     while (1)
     {
         for (i = 1; i < n; i++)
         {
             if ((p[i-1] * 5 + 1) % 4 != 0)
                 break;
             p[i] = (p[i-1] * 5 + 1) / 4;
         }
 
         if (i >= n)
             break;
         p[0]++;
     }
 
     for (i = 0; i < n; i++)
     {
         printf("%d ", p[i]);
     }
     printf("\n");
     printf("peach count = %d.\n", 5 * p[n-1] + 1);
     
     return 0;
 }
 
 int main()
 {
     monkey_peach(5);
     system("PAUSE"); 
     return 0;
 }

只是現在看這段C++的代碼,自己還欠缺理解,再研究研究……

運行結果:

突然也就覺得C++很神奇,願自己以后多學學!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM