看板 STU 關於我們 聯絡資訊
※ 引述《laymu (炎羅)》之銘言: 貼出我的Code #include <stdio.h> #include <stdlib.h> int main() { int buy = 10 , sell = 5 , mony = 50 ; int x = 0 , total = 0 , tree = 0 , buytime = 10 ; // Round 0 printf("%d,%d,%d,\n",total,mony,tree); while ( mony <= 1000 ) { total++ ; if ( tree * sell + mony >= 1000 ) { mony = tree * sell + mony; tree = 0; //把樹全賣了 } else if( mony / buytime > 0 ) { tree = tree + mony / buy ; //算出要買幾棵 mony = mony % buy ; //算出買樹花了多少錢 buytime = buytime * 2; } else mony = mony + tree ; //不買樹的生錢時間 printf("%d,%d,%d,\n",total,mony,tree); } printf("%d,\n,%d",total,mony); system("pause"); } 52回合 最終1024元 再找時間用Java寫 -- 你有看過有人寫C的時後,是拿Java的書在翻的嗎 嗯~~那個人就是我XDXD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.105.162
andy012315 :老師沒教C = = 04/29 16:32
laymu :if(mony/buttime>0) 和 buytime*=2的理由是什麼? 04/29 16:39
IF是判定你有沒有足夠的錢去買樹,沒有的話就存錢 byetime*=2 是每隔2的次方次後再買樹 是為了降低買樹的次數 這有點像是生管系統 要怎麼樣組合才能得出C/P值最高的投資
willy0206 :這隻程式不用學c也看的懂 printf的%d對應後面的 , 04/29 16:50
andy012315 :中路略懂 前三行不懂X 04/29 17:00
前三行 阿就跟Java的inport一樣呀 然後就主程式啦
laymu :語法不重要啦,重點是why to do that? 04/29 17:15
每次數學都是用C寫 也不知道為啥 可能比較順吧
laymu :不,我的意思是為什麼要每隔2的次方才買? 04/29 19:02
laymu :有理由嗎?還是經驗 04/29 19:02
laymu :就像我之前的寫法是手中的現金達到10的整數倍才買 04/29 19:04
laymu :一樣是沒有理由,靠直覺回變猜的… 04/29 19:04
用猜的 只是想辦法降低中斷發生的機會 (OS中的多重處理,降低中斷可以提高系統效能…)
laymu :「減少中斷」這給了我一些靈感,我想應該存在一個 04/29 19:59
laymu :次數,是最有效率的。多於或少於這個次數都不會最快 04/29 19:59
laymu :然後擁有同樣中斷次數的流程,則存在很多種。 04/29 20:00
laymu :不過目前不能把時間花在這上頭 -_- 04/29 20:01
可以這樣想 中斷是必要的(因為要買樹) 但是是要在哪一回合被中斷 這樣扣掉這一回合買樹後的金錢增加量可以在最短時間內補回來 (買樹現虧總金額/2 + 樹現有總量) 但是如果你天天在中斷的話 就都給你發中斷要求就好啦 其實很明顯的 你若是每存滿7棵、10棵樹才買的話 那所需回合數也比每存滿一棵樹就發出中段請求買樹的效率要高 ※ 編輯: OpenGoodHate 來自: 123.204.105.162 (04/29 20:11) ※ 編輯: OpenGoodHate 來自: 61.223.228.68 (05/01 07:10)
muxiv : 就像我之前的寫法是手中 https://noxiv.com 06/21 16:27