請問排列組合之問題:如何做出正負號交叉之排列 |
尚未結案
|
asky
一般會員 發表:1 回覆:0 積分:0 註冊:2004-04-26 發送簡訊給我 |
另外我想若是要進一步表達出正負號交叉排列呢? 我簡單列舉為下:
例如: A=[-1, 3, 5, 7, -14, -8], 我如何可以做出一正一負互相交叉的情形. 也就是說,可獲得A=[5, -14, 3, -1, 7, -8]或[3, -1, 7, -8, 5, -14]或[7, -8, 3, -1, 5, -14]等等各種正負交叉的排列組合.(不是用排列組合的P4取2; 抱歉數學符號上下標無法標明,where, 4指上標,2指下標.)而是要求正負號交叉的情況. 我這假日會在help與網路上或matlab書上尋找,若有找到,也一併跟各位大大分享. Hint: (此處可忽略部看) 由於我要做pattern recognition的泛化性能(generalization performance),我們採用K-fold cross validation法做驗證時,要先去做相關的交叉排序,所以用上敘之簡單範例來請教各位.這樣做的優勢是可以讓每各fold內的正負號樣本數相同(例如3筆正的樣本數與3筆負的樣本數). 編輯記錄
taishyang 重新編輯於 2007-08-28 09:54:40, 註解 將文章分類成[問題]‧
|
daldal
高階會員 發表:6 回覆:102 積分:226 註冊:2007-06-18 發送簡訊給我 |
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
這應該有n!種可能吧,如果elements不重複.....
你找找STL中的next_permutation及prev_permutation...應該能達到你的要求... 還有...你是要用matlab? ===================引 用 asky 文 章=================== 另外我想若是要進一步表達出正負號交叉排列呢? 我簡單列舉為下: 例如: A=[-1, 3, 5, 7, -14, -8], 我如何可以做出一正一負互相交叉的情形. 也就是說,可獲得A=[5, -14, 3, -1, 7, -8]或[3, -1, 7, -8, 5, -14]或[7, -8, 3, -1, 5, -14]等等各種正負交叉的排列組合.(不是用排列組合的P4取2; 抱歉數學符號上下標無法標明,where, 4指上標,2指下標.)而是要求正負號交叉的情況. 我這假日會在help與網路上或matlab書上尋找,若有找到,也一併跟各位大大分享. Hint: (此處可忽略部看) 由於我要做pattern recognition的泛化性能(generalization performance),我們採用K-fold cross validation法做驗證時,要先去做相關的交叉排序,所以用上敘之簡單範例來請教各位.這樣做的優勢是可以讓每各fold內的正負號樣本數相同(例如3筆正的樣本數與3筆負的樣本數). |
gyfatty
一般會員 發表:6 回覆:13 積分:8 註冊:2006-10-18 發送簡訊給我 |
您好:
我看到您的問題, 我使用BCB解了一下, 是否只有36種排列順序, 小弟的code 如下: [code cpp] int a[3]={ 3, 5, 7}; int b[3]={-1,-14,-8}; for(int c=0;c<3;c ) for(int d=0;d<3;d ) for(int e=0;e<3;e ) for(int c1=0;c1<3;c1 ) for(int d1=0;d1<3;d1 ) for(int e1=0;e1<3;e1 ) if(c!=d&&d!=e&&e!=c && c1!=d1&&d1!=e1&&e1!=c1) { AnsiString ans[6]; ans[0]=a[c]; ans[2]=a[d]; ans[4]=a[e]; ans[1]=b[c1]; ans[3]=b[d1]; ans[5]=b[e1]; Memo1->Lines->Append(ans[0] ans[1] ans[2] ans[3] ans[4] ans[5]); } [/code] 是否有錯誤 請大家糾正! |
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |