線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1032
推到 Plurk!
推到 Facebook!

陣列排列組合

尚未結案
chinlin0410
一般會員


發表:3
回覆:1
積分:0
註冊:2003-10-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-18 12:43:18 IP:163.25.xxx.xxx 未訂閱
請問各位高手: 假如我有一個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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-19 22:00:03 IP:211.76.xxx.xxx 未訂閱
引言: 請問各位高手:
假如我有一個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
系統時間:2024-06-01 23:06:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!