SDNU1332 矩阵交换

本文介绍了一个C++程序,用于处理N*N矩阵上的行和列交换操作,并能够响应询问指定位置元素值的操作。程序通过记录行和列的映射来高效地进行交换操作,避免了直接在矩阵中修改数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1)只交换行或列的标号。

#include <iostream>
#include <stdio.h>
#include <string>
#include <string.h>

using namespace std;
//int x[110][110];
//int y[110][110];
int x_bian[110];
int y_bian[110];
int matrix[110][110];
struct Node{
    int one,sec;
    string name;
}node[20010];
int main()
{
    int n,k;
        cin>>n;
        cin>>k;
        int g;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                cin>>matrix[i][j];
                //x[i][j]=matrix[i][j];
            }
        }
        //cout<<"1111"<<endl;
        for(int i=1;i<=n;i++){
            x_bian[i]=i;
            y_bian[i]=i;
        }
        string name;
        int xx;
        int yy;
        int endd=-1;
        for(int i=0;i<k;i++){
            cin>>node[i].name>>node[i].one>>node[i].sec;
            if(node[i].name=="Ask") endd=i;
        }
        for(int i=0;i<k;i++){
            if(node[i].name=="Ask"){
                cout<<matrix[x_bian[node[i].one]][y_bian[node[i].sec]];
                if(i!=endd){
                    cout<<endl;
                }
            }
            else if(node[i].name=="swapR"){
                int x_temp=x_bian[node[i].one];
                int x_temp2=x_bian[node[i].sec];
                x_bian[node[i].one]=x_temp2;
                x_bian[node[i].sec]=x_temp;
            }
            else if(node[i].name=="swapC"){
                int y_temp=y_bian[node[i].one];
                int y_temp2=y_bian[node[i].sec];
                y_bian[node[i].one]=y_temp2;
                y_bian[node[i].sec]=y_temp;
            }
            //if(i==k-1){
                //cout<<endl;
            //}
        }

    return 0;
}


2)

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 30 12 3Ask 2 2swapR 1 2Ask 1 1

Sample Output

32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值