[問題] 如何有效找出所有可能性組合
目前因為程式上需求 需要寫一個能夠找出一陣列內所有相加後可能的值
例如:一陣列內容有1 2 3 4 5
那可能會產生的值就會有
1 2 3 4 5
1+2 1+3 1+4 1+5 2+3 2+4 2+5 3+4 3+5 4+5
1+2+3 1+2+4 1+2+5 1+3+4 1+3+5 1+4+5 2+3+4 2+3+5 3+4+5
1+2+3+4 1+2+3+5 2+3+4+5
1+2+3+4+5
不知道大家有沒有碰過相關的問題
不知道統計或是數學上有沒有這種的公式可以使用的
還在努力想有什麼相關聯>"<
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.122.183
→
07/16 23:54, , 1F
07/16 23:54, 1F
推
07/17 01:32, , 2F
07/17 01:32, 2F
推
07/17 07:56, , 3F
07/17 07:56, 3F
→
07/17 07:57, , 4F
07/17 07:57, 4F
→
07/17 07:58, , 5F
07/17 07:58, 5F
→
07/17 07:59, , 6F
07/17 07:59, 6F
→
07/17 07:59, , 7F
07/17 07:59, 7F
→
07/17 08:00, , 8F
07/17 08:00, 8F
→
07/17 08:01, , 9F
07/17 08:01, 9F
→
07/17 08:01, , 10F
07/17 08:01, 10F
→
07/17 08:02, , 11F
07/17 08:02, 11F
→
07/17 08:03, , 12F
07/17 08:03, 12F
可能一開始規則沒訂好 假設我的矩陣目前有15個值
1 2 3 3 4 4 5 6 7 7 8 9 10 11 12
然後要根據這十五個值排出其相加所有能夠產生的值
例如1+2 +3+3+4=13
所以一樓的那個做法可能就沒辦法了QQ
目前用比較笨的方法 假設我的陣列B1=[1 2 2 3 4]
5個值我就設五層的FOR迴圈 然後用一個ArrayList用放所以可能產生的值
for i=0;i<5i++
{
A1.Add(B1[i]);
for j=2:5 (簡寫)
if (j>i)
{
A1.Add(B1[i]+B1[j]);
for k=3:5
{
if (k>j)
{
A1.Add(B1[i}+B1[j]+B1[k]);
for L=4:5
{
if(L>k)
{
A1.Add(B1[i]+B1[j]+B1[k]+B1[L]);
for (M=5;M<=5;M++)
{
if(K>M)
{
A1.Add(B1[i]+B1[j]+B1[k]+B1[L]+B1[M]);
}}}}}}}}
這樣的做法就能夠把所有可能產生的值列出來
1
1+2
1+2+3
1+2+3+4
1+2+3+4+5
1+2+3+5
1+2+4
1+2+4+5
1+2+5
1+3
.
.
.
這樣的做法成找出所以相加的可能性
之後再將A1用兩個迴圈去判定有沒有重覆的 重複的就移除囉!!
不過除了這樣的方法有沒有什麼更好的方法
不知道2樓的大大是不是跟我一樣的意思
因為這個方法還滿耗時間的 而且算是暴力破解法吧(汗)
希望大家一起討論看看囉!!
※ 編輯: chris70211 來自: 114.38.119.227 (07/17 22:23)
推
07/17 23:50, , 13F
07/17 23:50, 13F
→
07/17 23:50, , 14F
07/17 23:50, 14F
→
07/18 10:24, , 15F
07/18 10:24, 15F
→
07/18 10:26, , 16F
07/18 10:26, 16F
→
07/18 10:29, , 17F
07/18 10:29, 17F
→
07/18 10:30, , 18F
07/18 10:30, 18F
→
07/18 10:31, , 19F
07/18 10:31, 19F
因為重點在於矩陣數值的相加的值
所以如果在相加之前就考慮重覆性會把相加的可能性降低
例如 1 2 2
相加的值就會有1 2 2 3 3 4 5
可是如果一開始就考慮重覆性的問題
相加的值就只會有 1 2 3不知道有沒有誤解你們的意思
※ 編輯: chris70211 來自: 114.38.122.29 (07/18 21:03)
→
07/19 00:09, , 20F
07/19 00:09, 20F
→
07/19 00:10, , 21F
07/19 00:10, 21F
→
07/19 00:10, , 22F
07/19 00:10, 22F
→
07/19 02:10, , 23F
07/19 02:10, 23F
→
07/19 02:10, , 24F
07/19 02:10, 24F
→
07/19 02:11, , 25F
07/19 02:11, 25F
→
07/19 02:19, , 26F
07/19 02:19, 26F
→
07/19 02:20, , 27F
07/19 02:20, 27F
→
07/19 02:21, , 28F
07/19 02:21, 28F
推
07/20 03:03, , 29F
07/20 03:03, 29F
→
07/20 03:03, , 30F
07/20 03:03, 30F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章