交換矩陣行列 不用交換元素 交換行列的輸出編號

2021-08-08 23:10:34 字數 1316 閱讀 7755

題目描述:

給定乙個n*m的矩陣,要求支援下面的操作:

0 x y:交換第x行與第y行

1 x y:交換第x列與第y列

題目連線

input:

多組資料。對於每組測試資料,第一行包含三個數n,m,k(1<=n,m<=1000;1<=k<=100000),分別表示行數,列數,運算元。

接下來n行,每行m個整數,表示初始的矩陣,矩陣中每個數小於10^9。

接下來k行每行乙個操作,格式如題目所述。

output:

對於每組資料,輸出完成所有操作後的矩陣。

示例:

輸入:

3 2 2

1 23 4

5 60 1 3

1 1 2

輸出:

6 54 3

2 1輸出的每一行後面沒有空格。

思路:

首先想到的是輸入一組操作就交換陣列兩行或列的元素,後來果不其然,時間超限。然後仔細想想,交換行列代表什麼,不就是把輸出的順序給顛倒了嘛,輸出順序又是什麼,不就是陣列行列的編號的順序嘛。所以,我們只要對每一組運算元交換其行列的編號就可以啦。為了不引起混亂,我們重新分配兩個陣列分別表示行列編號的順序。下面上**:

#includeusing namespace std;

int a[1005][1005]; //矩陣 m x n

int r[1005]; //用來儲存行編號的順序

int c[1005]; //用來儲存列編號的順序

int i,j,m,n,k,flag,x,y,t;

int main()

for(i=1;i<=m;i++) r[i]=i; //初始化行編號

for(i=1;i<=n;i++) c[i]=i; //初始化列編號

while(k--)

else //deal with row

}//print

for(i=1;i<=m;i++)

}} }

return 0;

}

個人感悟:

學習就是不斷意識到自己以前錯了的過程。就像小學學到的東西大學也許就變成錯的了,暴力剛開始接觸程式設計時是對的,隨著學習深入就是錯誤的了。我們應當坦然,因為這是一種進步,錯了不要緊,不要繼續錯下去就對了。

矩陣交換行

問題描述 在main函式中,生成乙個5 5的矩陣,輸入矩陣資料,並輸入n,m的值。判斷n,m是否在陣列範圍內,如果不在,則輸出error 如果在範圍內,則將n行和m行交換,輸出交換n,m後的新矩陣。輸入 5 5矩陣的資料,以及n和m的值。輸出 如果不可交換,則輸出error 如果可交換,則輸出新矩陣...

矩陣交換行

給定乙個5 5的矩陣 數學上,乙個r c的矩陣是乙個由r行c列元素排列成的矩形陣列 將第n行和第m行交換,輸出交換後的結果。輸入共6行,前5行為矩陣的每一行元素,元素與元素之間以乙個空格分開。第6行包含兩個整數m n,以乙個空格分開。1 m,n 5 輸出交換之後的矩陣,矩陣的每一行元素佔一行,元素之...

矩陣交換行

描述 給定乙個5 5的矩陣 數學上,乙個r c的矩陣是乙個由r行c列元素排列成的矩形陣列 將第n行和第m行交換,輸出交換後的結果。輸入輸入共6行,前5行為矩陣的每一行元素,元素與元素之間以乙個空格分開。第6行包含兩個整數m n,以乙個空格分開。1 m,n 5 輸出輸出交換之後的矩陣,矩陣的每一行元素...