設定行列索引,實現二維陣列的翻轉

2021-09-26 04:14:11 字數 1270 閱讀 6693

小m有乙個n*m的方格,行列下標均從0開始。其中有k個方格中有數字,表示為(x, y)方格中有數字c。對方格有2種操作,交換方格的兩行或者交換方格的兩列。

小m希望隨時能夠知道在經過一系列交換之後某一方格中是否含有數字,並且如果有的話,數字是多少。

輸入資料第一行包含3個整數n, m, k。表示n行m列的方格,並且其中k個方格有數字。

(1 <= n, m <= 10^5, 0 <= k <= 10^5)

接下來k行,每行有3個整數,x, y, c,表示(x,y)方格中有數字c。

(0 <= x <= n - 1, 0 <= y <= m - 1, 1 <= c <= 1000)

接下來有乙個整數t,表示有t次操作或詢問。(0 <= t <= 10^5)

接下來t行,買行有三個整數q, a, b。

當q == 0時,交換行a和行b所有方格。

當q == 1時,交換列a和列b所有方格。

當q == 2時,詢問(a, b)是否有數字,如果有則輸出該數字,如果沒有輸出-1。

資料保證q,a,b均在合法的範圍之內。

對於每個詢問,輸出乙個整數表示其答案。
示例1

複製

3 3 2

1 1 1

2 2 2

52 1 1

0 0 1

1 0 1

2 1 1

2 2 2

複製

1

-12

首先有3x3的方格,其中(1,1)有數字1,(2,2)有數字2,即:

-1 -1 -1

-1 1 -1

-1 -1 2

5次操作,

第一次查詢(1,1)得到1;

第二次交換行1和行2,即:

-1 1 -1

-1 -1 -1

-1 -1 2

第三次交換列1和列2,即:

1 -1 -1

-1 -1 -1

-1 -1 2

第四次查詢(1,1)得到-1;

第五次查詢(2,2)得到2;

#include using namespace std;

unordered_mapdic;

int main(void)

for (int i = 0; i < m; ++i)

for(int i = 0; i < k; i++)

cin >> t;

while(t--) else if(q == 0) else

}return 0;}

二維陣列行列調換

將二維陣列中的行列互調顯示出來 首先來看乙個3 3的陣列 1 2 3 4 5 6 7 8 9 行列轉換後 1 4 7 2 5 8 3 6 9 看到上面這倆可以發現對角線上的數是不動的 發生變化的數只有 2 3 6 4 7 8 用二維陣列表示 0 1 0 2 1 2 由陣列能發現 0 橫行 1 0 2...

二維陣列建立以及新增行列索引的方法

列表 a pd.dataframe np.arange 10 reshape 2,5 index list ab columns list qwxyz print a 字典 temp dict a pd.dataframe temp dict print a a for i in range 3 f...

C 二維陣列索引

int a new int 3,3 a 1,1 10 for int i 0 i a.rank i debug.log math.abs a 1,1 大括號 表示行 逗號,表示列int row array.rank 獲取維數,這裡指行數 int col array.getlength 1 獲取指定維...