幾個小時前我做了a question,但是在完成我在這個問題上提出的問題之後,我不得不做些什麼。人們給我的所有解決方案都沒問題,但對於我真正需要的東西卻毫無用處,因爲我沒有寫出這個問題。我必須保存一個重要的價值位置,而不必爲了解決問題而保存在其他問題上。所以這是正確的。我有一個8x8的矩陣,在選擇了我想要的那一行之後,我想得到它的三個最小元素,然後從這三個元素中選擇一個隨機。然後,刪除包含此號碼的行和列。問題是我不知道如何處理這三個元素並刪除列/行。我只知道如何獲得最小的元素,即下面的代碼。查找值後刪除矩陣的行和列(C)
int pieza[ROWS][COLS] = {
0, 2, 2, 5, 3, 2, 1, 1,
0, 4, 5, 2, 4, 3, 0, 0,
0, 4, 2, 2, 1, 2, 3, 2,
0, 3, 1, 5, 1, 2, 3, 4,
2, 5, 6, 5, 3, 1, 2, 7,
8, 2, 0, 0, 0, 2, 1, 1,
1, 2, 2, 1, 1, 6, 3, 4,
0, 1, 3, 2, 0, 0, 0, 0,
};
int myrow = 3; // the row I want to analyze
int index;
int min=0;
for (index=0;index<8;index++) {
printf("%d", piezas[myrow][index]);
if(piezas[myrow][index]<min)
min=piezas[myrow][index];
printf("\t\t");
}
printf("min: %d", min);
這是我想做的事情。如果初始矩陣是(這始終是一個nxn
矩陣):
{
0, 2, 2, 5, 3, 2, 1, 1,
0, 4, 5, 2, 4, 3, 0, 0,
0, 4, 2, 2, 1, 2, 3, 2,
0, 3, 1, 5, 1, 2, 3, 4,
2, 5, 6, 5, 3, 1, 2, 7,
8, 2, 0, 0, 0, 2, 1, 1,
1, 2, 2, 1, 1, 6, 3, 4,
0, 1, 3, 2, 0, 0, 0, 0,
};
我選擇行號3:
0, 3, 1, 5, 1, 2, 3, 4,
該算法必須選擇該行的三個最小元素。
0, 1, 1
並隨機選擇其中的一個。如果,例如,它選擇的第一個「一」 ...
0, **1**, 1
...算法必須去到該行的這是第3列(becaue那是那是立場,即「1」)和刪除的行和列,所以輸出矩陣將如下,一個尺寸小於原來的矩陣(beucase您已刪除的行和列):
{
0, 2, 5, 3, 2, 1, 1,
0, 4, 2, 4, 3, 0, 0,
0, 4, 2, 1, 2, 3, 2,
2, 5, 5, 3, 1, 2, 7,
8, 2, 0, 0, 2, 1, 1,
1, 2, 1, 1, 6, 3, 4,
0, 1, 2, 0, 0, 0, 0,
};
我只知道如何到達行,但我有問題處理三個最低限度,因爲我有很多問題指針,我不是很多C.
在此先感謝
你的最終矩陣(所希望的輸出)不有道理的是,你不能有一個被聲明爲[8] [8]的矩陣,並且只爲7x7矩陣提供初始值。事實上,在7個元素之後放置一個換行符對C編譯器沒有任何意義,它會給你一個8x8矩陣,因爲這就是你要求的。 – unwind 2013-05-13 11:03:16
我的錯。如果給出一個n×n矩陣,輸出矩陣必須是n-1×n-1矩陣。少一個維度。該帖子現在被編輯。 – 2013-05-13 11:05:10