亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
樓主: loveguohuasai
打印 上一主題 下一主題

[算法] 母牛數(shù)量算法 [復(fù)制鏈接]

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
71 [報(bào)告]
發(fā)表于 2003-08-07 13:11 |只看該作者

母牛數(shù)量算法

已經(jīng)加上了釋放內(nèi)存的那一段了。

論壇徽章:
0
72 [報(bào)告]
發(fā)表于 2003-08-07 13:46 |只看該作者

母牛數(shù)量算法

我用vector重新實(shí)現(xiàn)flw的算法,正好考驗(yàn)一下stl的健壯性。

  1. #include<iostream>;
  2. #include<vector>;

  3. using namespace std;

  4. class Cow;
  5. vector< class Cow *>; ver;

  6. class Cow {
  7.     int age;
  8. public:
  9.     Cow():age(0) {}
  10.     void grow(void) {
  11.       age++;                // 每年長(zhǎng)了一歲。
  12.       if ( age >;= 4 ) {     // 第四個(gè)年頭起生小牛。
  13.          ver.push_back(new Cow);
  14.       }
  15.    }
  16. };

  17. int main()
  18. {
  19.    int years = 40;  
  20.    ver.push_back(new Cow);
  21.    for( int i=0; i<years; i++ )
  22.       for( int j=0; j<ver.size(); j++)
  23.             ver[j]->;grow();
  24.    //輸出結(jié)果
  25.    cout<<ver.size()<<endl;
  26.    //釋放內(nèi)存
  27.    for(int i=0; i<ver.size(); i++)
  28.       delete ver[i];
  29. }
復(fù)制代碼

算到y(tǒng)ears=40時(shí),出來(lái)的結(jié)果是1822473。計(jì)算years=50時(shí)就狂讀硬盤(pán)了,所有我沒(méi)有繼續(xù)。由此看來(lái)stl的容器能夠支持的元素個(gè)數(shù)是很大的,但不知道最大是多少,什么時(shí)候能溢出?

論壇徽章:
0
73 [報(bào)告]
發(fā)表于 2003-08-07 16:50 |只看該作者

母牛數(shù)量算法

我也做了一個(gè):

  1. #include <stdlib.h>;
  2. #include <stdio.h>;

  3. #define MAX_STRING_LEN                128

  4. static void Add(const char *, const char *, char *);

  5. int main(int argc, char **argv)
  6. {
  7.         char        szCowCount[MAX_STRING_LEN];
  8.         char        szLastCount3[MAX_STRING_LEN];
  9.         char        szCount3[MAX_STRING_LEN];
  10.         char        szCount2[MAX_STRING_LEN];
  11.         char        szCount1[MAX_STRING_LEN];
  12.         int                iYears;
  13.         int                i;
  14.        
  15.         iYears = atoi(argv[1]);
  16.         for (i = 1; i <= iYears; ++i)
  17.         {
  18.                 switch(i)
  19.                 {
  20.                         case 1:
  21.                         case 2:
  22.                         case 3:
  23.                                 strcpy(szCowCount, "1");
  24.                         break;
  25.                         case 4:
  26.                                 strcpy(szCowCount, "2");
  27.                         break;
  28.                         case 5:
  29.                                 strcpy(szCowCount, "3");
  30.                                 strcpy(szCount3, "1");
  31.                                 strcpy(szCount2, "1");
  32.                                 strcpy(szCount1, "1");
  33.                         break;
  34.                         default:
  35.                                 if (strlen(szCowCount) >;= MAX_STRING_LEN)
  36.                                         goto OUT;
  37.                                 strcpy(szLastCount3, szCount3);
  38.                                 Add(szCowCount, szCount3, szCowCount);
  39.                                 //szCowCount = szLastCowCount + szCount3;
  40.                                 Add(szCount3, szCount2, szCount3);
  41.                                 //szCount3 += szCount2;
  42.                                 strcpy(szCount2, szCount1);
  43.                                 strcpy(szCount1, szLastCount3);
  44.                         break;
  45.                 }
  46.         }
  47. OUT:       
  48.         printf("Yead:[%d]; Cow number:[%s].\n", iYears, szCowCount);
  49. }



  50. //
  51. //  字符串?dāng)?shù)據(jù)相加.
  52. //
  53. static void Add(const char *pcFirst, const char *pcSecond, char *pcAdd)
  54. {
  55.         char        szFirstAdd[MAX_STRING_LEN];
  56.         char        szAdd[MAX_STRING_LEN];
  57.         int                i;
  58.         int                iFirst;
  59.         int                iSecond;
  60.         int                iAdd;
  61.         int                iFirstLen;
  62.         int                iSecondLen;
  63.         int                iMinLen;
  64.         int                iOver = 0;
  65.         int                n;
  66.        
  67.         iFirstLen = strlen(pcFirst);
  68.         iSecondLen = strlen(pcSecond);
  69.         if (iFirstLen < iSecondLen)
  70.                 iMinLen = iFirstLen;
  71.         else
  72.                 iMinLen = iSecondLen;
  73.         for (i = 0; i < iMinLen; ++i)
  74.         {
  75.                 szFirstAdd[i] = pcFirst[iFirstLen - i - 1] - 48 + pcSecond[iSecondLen - i - 1] + iOver;

  76.                 if (szFirstAdd[i] - 48 >;= 10)
  77.                 {
  78.                         szFirstAdd[i] = (szFirstAdd[i] - 48) % 10 + 48;
  79.                         iOver = 1;
  80.                 }
  81.                 else
  82.                         iOver = 0;
  83.         }
  84.         if (iFirstLen >; iMinLen)
  85.         {
  86.                 for (; i < iFirstLen; ++i)
  87.                 {
  88.                         szFirstAdd[i] = pcFirst[iFirstLen - i - 1] + iOver;
  89.                 if (szFirstAdd[i] - 48 >;= 10)
  90.                 {
  91.                         szFirstAdd[i] = (szFirstAdd[i] - 48) % 10 + 48;
  92.                         iOver = 1;
  93.                 }
  94.                 else
  95.                         iOver = 0;
  96.                 }
  97.         }
  98.         else
  99.         {
  100.                 for (; i < iSecondLen; ++i)
  101.                 {
  102.                         szFirstAdd[i] = pcSecond[iSecondLen - i - 1] + iOver;
  103.                 if (szFirstAdd[i] - 48 >;= 10)
  104.                 {
  105.                         szFirstAdd[i] = (szFirstAdd[i] - 48) % 10 + 48;
  106.                         iOver = 1;
  107.                 }
  108.                 else
  109.                         iOver = 0;
  110.                 }
  111.         }
  112.         if (iOver == 1)
  113.                 szFirstAdd[i++] = '1';
  114.        
  115.         for (n = 0; n < i; ++n)
  116.                 szAdd[i - n - 1] = szFirstAdd[n];
  117.         szAdd[i] = '\0';
  118.         strcpy(pcAdd, szAdd);
  119.        
  120.         return;
  121. }
復(fù)制代碼

測(cè)試了幾個(gè)跟flw兄的結(jié)果一致,不知道數(shù)字大了會(huì)不會(huì)錯(cuò),請(qǐng)各位測(cè)試一下!
要是沒(méi)有問(wèn)題的話下次來(lái)討論算法。!

論壇徽章:
0
74 [報(bào)告]
發(fā)表于 2003-08-07 19:41 |只看該作者

母牛數(shù)量算法

強(qiáng),不過(guò)years只能算到767,768以上出來(lái)的數(shù)字全都一樣。

論壇徽章:
0
75 [報(bào)告]
發(fā)表于 2003-08-07 19:47 |只看該作者

母牛數(shù)量算法

有沒(méi)有注意,程序最后占了多少內(nèi)存呢?

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
76 [報(bào)告]
發(fā)表于 2003-08-07 21:02 |只看該作者

母牛數(shù)量算法

這個(gè)版好久沒(méi)這么熱鬧了。
一天沒(méi)來(lái),這么多code了,偶分析不過(guò)來(lái)了,太面了,落下了,來(lái)叫聲好。

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
77 [報(bào)告]
發(fā)表于 2003-08-07 22:46 |只看該作者

母牛數(shù)量算法

看了后來(lái)的,又評(píng)論了一點(diǎn),臭屁一下。

flw的算法的確是非常新穎,想法也非常的有創(chuàng)意。

但是,偶還是覺(jué)得不如偶的非遞歸算法好(嘻嘻)。

flw的算法中為每頭牛創(chuàng)建了一個(gè)節(jié)點(diǎn),異常龐大的內(nèi)存消耗自不必說(shuō),偶覺(jué)得創(chuàng)建節(jié)點(diǎn)的開(kāi)銷(xiāo)也是蠻大的,因?yàn)楫吘共皇窃械臄?shù)據(jù)類(lèi)型。在者,在每一年的循環(huán)中都要?dú)v遍一次鏈表,這個(gè)也是不小的一筆時(shí)間開(kāi)銷(xiāo)吧?

當(dāng)然,這個(gè)用鏈表的想法應(yīng)該是這個(gè)帖子里最有創(chuàng)意的想法了吧,版主到底是版主。

HopeCao的想法也很好,用字符串代替原有的數(shù)據(jù)類(lèi)型以拓展可以求解的空間,可以計(jì)算到700多,想法非常好。

論壇徽章:
0
78 [報(bào)告]
發(fā)表于 2003-08-07 23:54 |只看該作者

母牛數(shù)量算法

我模仿flw老大的C++版,做了一個(gè)java版本,給大家找找樂(lè),有興趣請(qǐng)看:  
   http://www.chinaunix.net/forum/viewtopic.php?p=882955#882955     

還有,flw老大,你的code還有小問(wèn)題,釋放內(nèi)存那段,ptr沒(méi)有聲明過(guò)吧。應(yīng)改為Cow *ptr = cow::head;

論壇徽章:
0
79 [報(bào)告]
發(fā)表于 2003-08-08 02:31 |只看該作者

母牛數(shù)量算法

一頭牛,引來(lái)兄弟無(wú)數(shù)呀
哈哈哈哈哈哈哈哈:)

論壇徽章:
0
80 [報(bào)告]
發(fā)表于 2003-08-08 02:44 |只看該作者

母牛數(shù)量算法

原帖由 "海濱" 發(fā)表:
一頭牛,引來(lái)兄弟無(wú)數(shù)呀
哈哈哈哈哈哈哈哈:)
   

不不,關(guān)鍵是“母”牛。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP