陣列排列組合 |
尚未結案
|
chinlin0410
一般會員 發表:3 回覆:1 積分:0 註冊:2003-10-04 發送簡訊給我 |
請問各位高手:
假如我有一個3*3的陣列 1 0 0
0 1 0
0 0 1
可是我想要依colum做排列組合,會形成以下3!=6個陣列
1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0
0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1
0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0
那我要如何用程式寫出,而且因為可能有k*n的陣列 如果每個組合的陣列都要存,會不會太多了,要如何改善。(因為我每次只要取一種陣列拿出來就可,不過是random取的)
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言: 請問各位高手:假如我有一個3*3的陣列 1 0 0 0 1 0 0 0 1 可是我想要依colum做排列組合,會形成以下3!=6個陣列 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0那我要如何用程式寫出,而且因為可能有k*n的陣列 如果每個組合的陣列都要存,會不會太多了,要如何改善。(因為我每次只要取一種陣列拿出來就可,不過是random取的) >>< face="Verdana, Arial, Helvetica"> 如果只是 random 取的,何不 random 產生即可。 按您的需要,其實只需要先 random 產生 1,2,3 的數字順序即可,1 -> 1 0 0 2 -> 0 1 0 3 -> 0 0 1再依 1,2,3 最後的順序去產生陣列。例如:int n[3]; n[0]=random(3) 1; // n[0] 為 1,2,3 中任一數 n[1]=random(3) 1; // n[1] 為 1,2,3 中任一數 while(n[0]==n[1]) // 如果 n[0] 與 n[1] 相等,就再取一次 n[1] n[1]=random(3) 1; n[2]=(1 2 3)-n[0]-n[1]; // n[2] 就是除了 n[0],n[1] 的另一個 1,2,3 內的數OK,以上已經產生了 1,2,3 的隨機排列 n1,n2,n3 ,再來按它們產生相要的陣列即可,如:int Array[3][3]; for(int i=0;i<3;i ) { for(int j=0;j<3;j ) { if(n[i]==j) Array[i][j]=1; else Array[i][j]=0; } }如此的 Array 就會是您要的結果。 哈哈!寫玩後,覺得好久沒玩這樣的 code 了,現在,如果有類似的應用,又如果只有 3x3 的話,那我可能會用最笨的方法,建靜態 Table,反正也才花 3x3x6 的記憶體空間 <>沒空更新的網頁... href="http://dllee.adsldns.org">http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |