1332.放水 SDNUOJ1332

Description
给定一个N*N的矩阵,支持3种操作:
swapR a b:交换第a行和第b行的所有元素;
swapC a b:交换第a列和第b列的所有元素;
Ask a b:询问第a行第b列元素的值

Input
第一行N,K,为矩阵大小和操作个数
接下来N行每行N个正整数代表矩阵元素
接下来K行每行一个操作,格式如题目所述。
1 <= N <= 100; 1 <= K <= 20000;

Output
对于每个询问,输出一行作为答案。

Sample Input
2 3
0 1
2 3
Ask 2 2
swapR 1 2
Ask 1 1

Sample Output
3
2

#include <iostream>
#include <algorithm>
using namespace std;

int c[105][105];

int main()
{
    int n, k;
    while(cin >> n >> k)
    {
        for(int i = 1; i <= n; ++i)
            for(int j = 1; j <= n; ++j)
            cin >> c[i][j];
        for(int i = 0; i < k; ++i)
        {
            string s;
            int a, b;
            cin >> s >> a >> b;
            if(s == "Ask")
                cout << c[a][b] << '\n';
            if(s == "swapR")
                for(int j = 1; j <= n; ++j)
                swap(c[a][j], c[b][j]);
            if(s == "swapC")
                for(int i = 0; i <= n; ++i)
                swap(c[i][a], c[i][b]);
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zhaobaole2018/article/details/86296719