Re: [問題] 用c產生一個亂數矩陣並檢查是否重複

看板C_and_CPP (C/C++)作者 (社會人)時間16年前 (2009/10/10 13:51), 編輯推噓2(2017)
留言19則, 2人參與, 最新討論串11/11 (看更多)
原文吃光光 問題又來了 如果想把5x5矩陣 變成一個 N X N 的亂數矩陣 我修改了之前的程式碼 可是又失敗了 程式碼如下 int i, j, k, n; int a[n][n]; int size = n*n; int *num = new int[size]; printf("請輸入所要產生亂數矩陣 NXN 之大小\n"); scanf("%d",&n); srand(time(NULL)); for(i = 0 ; i < size ; i++) { num[i] = i + 1; } for(i = 0 ; i < n ; i++) { for(j = 0 ; j < n ; j++) { k = rand() % size; a[i][j] = num[k]; num[k] = num[--size]; } } delete [] num; 然後編譯的時候又出現了程式出現發生問題,必須關閉....... 請問各位大大 是哪裡出了問題? 還有如何把一個未知數目的矩陣 傳入副程式呀 例如 void search(int a [][這裡不是要填已知的數目嗎?]) 好多問題~"~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.13.125

10/10 14:54, , 1F
1. 你的n還沒被輸入你就已經要拿來開array了.
10/10 14:54, 1F

10/10 14:54, , 2F
2. a陣列要動態的開[n][n], 一樣要用動態配置的....
10/10 14:54, 2F

10/10 14:55, , 3F
3. 傳入array, 最簡單的方式就是傳它的頭的address, 然
10/10 14:55, 3F

10/10 14:55, , 4F
後另外傳入有多長的size可以用.
10/10 14:55, 4F

10/10 15:02, , 5F
產生亂數矩陣以解決,傳入副程式還在嘗試~"~
10/10 15:02, 5F

10/10 15:07, , 6F
老實說我覺得你不把它變成一維的傳進去, 要搞動態多維的
10/10 15:07, 6F

10/10 15:08, , 7F
會變得很麻煩, 因為動態多維在寫二維以上指標時你沒辦法
10/10 15:08, 7F

10/10 15:08, , 8F
不知道該怎麼做...可以教我嗎?
10/10 15:08, 8F

10/10 15:08, , 9F
在compile time時知道指標要怎麼寫, 再者, 動態配置的多
10/10 15:08, 9F

10/10 15:09, , 10F
維陣列你也不能保證其連續性.
10/10 15:09, 10F

10/10 15:09, , 11F
最簡單的方式, 把它們變成一維陣列再傳. 我不明白你的
10/10 15:09, 11F

10/10 15:10, , 12F
search()非收二維陣列不可的理由; 非要用多維, 目前想到
10/10 15:10, 12F

10/10 15:11, , 13F
比較簡單的作法就是, 跑迴圈分多次傳, 每次也只傳一維.
10/10 15:11, 13F

10/10 15:11, , 14F
非要一次搞傳動態多維陣列, 有請板上其他強者解答Orz
10/10 15:11, 14F

10/10 15:12, , 15F
您的意思是在把它變回一維在傳? 我把他傳進去的目的是要
10/10 15:12, 15F

10/10 15:13, , 16F
行 列 跟 對角線相加 這樣可以做得出來吧...
10/10 15:13, 16F

10/10 15:17, , 17F
基本上, 把陣列的頭和n傳進去, 一維陣列也可以用數學的
10/10 15:17, 17F

10/10 15:18, , 18F
方式算出行/列/對角等陣列index; 動態二維就是傳head**
10/10 15:18, 18F

10/10 15:19, , 19F
進去再搞吧我想@_@"
10/10 15:19, 19F
文章代碼(AID): #1Aq23Py- (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Aq23Py- (C_and_CPP)