[問題] 請問多個for迴圈的改寫法

看板C_and_CPP作者 (yoyo~)時間11年前 (2013/02/25 14:46), 編輯推噓3(302)
留言5則, 5人參與, 最新討論串1/1
我有一支多個for迴圈 程式如下: int num = 0; for(int v = 0; v < a[0]; v++) for(int w = 0; w < a[1]; w++) for(int x = 0; x < a[2]; x++) for(int y = 0; y < a[3]; y++) for(int z = 0; z < a[4]; z++) { Amount[0] = v; Amount[1] = w; Amount[2] = x; Amount[3] = y; Amount[4] = z; Amount[5] = a[5]; while { num = CAL(Amount);//Amount陣列傳到CAL函式計算 if(Amount[5] == 0) break; Amount[5]--; } } 請問大家一個問題 困擾我許久 因為a陣列不知道有多大 可能會改變定義的大小 如:a[6],a[7],...,a[10],..... 假設a陣列變成a[6] for迴圈會改寫成 for(0 ~ a[0]) for(0 ~ a[1]) for(0 ~ a[2]) for(0 ~ a[3]) for(0 ~ a[4]) for(0 ~ a[5]) { Amount[0] = ... . . Amount[6] = ... while( num=CAL(Amount) if(Amount[6] == 0) break; Amount[6]--; ) } 如果照我這樣寫法 勢必有很多個for迴圈,而且可能要重新編譯 那有沒有可能寫成比較簡單的形式 如函式 疊代 遞迴? 懇請大家給我一點方向讓我思考 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.209.141.218 ※ 編輯: Ahshiung 來自: 210.209.141.218 (02/25 14:55) ※ 編輯: Ahshiung 來自: 210.209.141.218 (02/25 14:58)

02/25 15:16, , 1F
遞迴啊
02/25 15:16, 1F

02/25 15:51, , 2F
參考 next_permutation(),寫一個自動產生組合的物件
02/25 15:51, 2F

02/25 15:52, , 3F
用 recursive, 或是數值進位法,例如時間進位。
02/25 15:52, 3F

02/25 17:40, , 4F
02/25 17:40, 4F

02/25 18:03, , 5F
遞迴
02/25 18:03, 5F
文章代碼(AID): #1HAmYyub (C_and_CPP)