[問題] c++ 如何不用array記憶數字
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
c++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
小弟剛學c++,教授出了一題作業:
(請勿跟我說網路上有一堆解答,我想靠自己寫出來,除非逼不得已..
像是現在,真的想不到時才想上來問問各位高手,請求各位給予點"提示、指引")
「已知有N個棒子(可能等長),請問可以圍成最大邊長的三角形的組合為何?」
教授當時在黑板上舉的例子是:
「2.5.10.3.7.24.8」這些數字中,能夠組成三角形且有最大周長的是?
我的邏輯是,先從最大的看,所以先將數列按照大小排序
「2.3.5.7.8.10.10.24」
接著從前三大的開始檢驗是否滿足三角不等式(任兩邊和大於第三邊)
所以答案就是8.10.10了,因此我接下來的程式按照這邏輯去寫..
我們目前只學了if..else、for、switch、&&、||、cin.get()、以及一些
很基本的概念,沒學過array。
教授出的這題,「N個正數」似乎可以是由鍵盤輸入,而不是事先在程式碼內打好。
我已經有了些想法,就是利用3個固定的變數以及1個儲存剛輸入的數字的變數,
用這四個變數來測試是否滿足triangle inequality以及符合三角不等式且
有最大邊長的邊長組合。但我遇到了瓶頸...
希望高人給予指點,只需要給小弟一些提示就好了,謝謝!
==我的問題==
看完程式碼後,應該可以理解我主要有三個變數abc
若已儲存的a、b、c(a>b>c)不滿足三角不等式,接著輸入的x也竟然讓這
四個數字湊不出三個可滿足三角不等式的數字,此時勢必要把這四個數字
都存在電腦裡,否則接下來第五個數字一輸入時,也許就會得出滿足不等式
的組合,但也有可能不滿足...依此類推就會發現...好像一定要用array來
儲存數字了,但是我沒學過而且也想試試看,看看有沒有辦法不用array就
做出來,以教授的講法,似乎是有辦法做到..
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/qoZ941tt
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.249.233
→
10/08 03:05, , 1F
10/08 03:05, 1F
恩,因為如果我將儲存的abc按照大小排序,那麼就可以只看b+c>a就好了。
→
10/08 03:09, , 2F
10/08 03:09, 2F
→
10/08 03:10, , 3F
10/08 03:10, 3F
→
10/08 03:10, , 4F
10/08 03:10, 4F
→
10/08 03:11, , 5F
10/08 03:11, 5F
→
10/08 03:11, , 6F
10/08 03:11, 6F
我怕的是..像是這樣
1(c) 1(b) 80(x) 90(a)
如果把1(c)蓋掉,接著我卻輸入1,那麼滿足不等式且有最大周長的將會是
原本的1(c) 1(b) 再加上最新輸入的1
所以我就不敢把最小的蓋掉了...
→
10/08 03:12, , 7F
10/08 03:12, 7F
→
10/08 03:13, , 8F
10/08 03:13, 8F
→
10/08 03:16, , 9F
10/08 03:16, 9F
→
10/08 03:16, , 10F
10/08 03:16, 10F
→
10/08 03:17, , 11F
10/08 03:17, 11F
→
10/08 03:17, , 12F
10/08 03:17, 12F
→
10/08 03:17, , 13F
10/08 03:17, 13F
對不起QQ 是我沒把題目說清楚 那N個數列其實是來自於N根棒子,棒子有長有短,
換句話說數列中可以有同樣大小的數字,只不過現在這數列是可以由鍵盤輸入的。
→
10/08 03:18, , 14F
10/08 03:18, 14F
→
10/08 03:19, , 15F
10/08 03:19, 15F
是的,我程式碼前面的(x>=a)的用意就是這個,但如果一直沒遇到更大的就不知道該怎辦了
→
10/08 03:19, , 16F
10/08 03:19, 16F
→
10/08 03:21, , 17F
10/08 03:21, 17F
當時教授只說:
「From the triangle problem you can appreciate the invention of array.
You first need to discover the general mechanism which can solve "n" sticks.
Then you start to write the program. 」
囧,我們是真的沒學過array..但如果一定要用array,那麼教授下面那句就怪怪的了。
言下之意是我們能夠不用array而寫出來。
不過還有一個可能,就是「可以把那N個數字的來源改為已事先在程式碼中打好」
(但如何將“N”個數字事先在程式碼中打好呢?N is an unknown number.)
→
10/08 03:21, , 18F
10/08 03:21, 18F
→
10/08 03:22, , 19F
10/08 03:22, 19F
→
10/08 03:23, , 20F
10/08 03:23, 20F
→
10/08 03:23, , 21F
10/08 03:23, 21F
→
10/08 03:23, , 22F
10/08 03:23, 22F
→
10/08 03:24, , 23F
10/08 03:24, 23F
我的問題就是您說的這個...想了好久O.O
→
10/08 03:24, , 24F
10/08 03:24, 24F
→
10/08 03:24, , 25F
10/08 03:24, 25F
→
10/08 03:25, , 26F
10/08 03:25, 26F
推
10/08 03:27, , 27F
10/08 03:27, 27F
→
10/08 03:27, , 28F
10/08 03:27, 28F
我也不清楚,但那時我們有特別問,他是說不用array..
→
10/08 03:28, , 29F
10/08 03:28, 29F
→
10/08 03:29, , 30F
10/08 03:29, 30F
→
10/08 03:29, , 31F
10/08 03:29, 31F
→
10/08 03:30, , 32F
10/08 03:30, 32F
※ 編輯: Qmmmmnn 來自: 140.112.249.233 (10/08 03:32)
推
10/08 10:17, , 33F
10/08 10:17, 33F
→
10/08 10:18, , 34F
10/08 10:18, 34F
→
10/08 10:18, , 35F
10/08 10:18, 35F
推
10/08 10:40, , 36F
10/08 10:40, 36F
→
10/08 10:41, , 37F
10/08 10:41, 37F
→
10/08 12:38, , 38F
10/08 12:38, 38F
→
10/08 12:40, , 39F
10/08 12:40, 39F
推
10/08 12:48, , 40F
10/08 12:48, 40F
推
10/08 12:51, , 41F
10/08 12:51, 41F
→
10/08 13:52, , 42F
10/08 13:52, 42F
推
10/08 15:37, , 43F
10/08 15:37, 43F
推
10/08 15:41, , 44F
10/08 15:41, 44F
推
10/08 16:46, , 45F
10/08 16:46, 45F