zoukankan      html  css  js  c++  java
  • XidianOJ 1129 an old problem

    题目描述

    给定一个n*m的矩阵,要求支持下面的操作:
    0 x y:交换第x行与第y行
    1 x y:交换第x列与第y列

    输入

    多组数据。对于每组测试数据,第一行包含三个数n,m,k(1<=n,m<=1000;1<=k<=100000),分别表示行数,列数,操作数。
    接下来n行,每行m个整数,表示初始的矩阵,矩阵中每个数小于10^9。
    接下来k行每行一个操作,格式如题目所述。

    输出

    对于每组数据,输出完成所有操作后的矩阵。

    --正文
    跟又是苹果其实是一个问题
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    int nowx[1001],nowy[1001];
    int n,m,k;
    int matrix[1001][1001];
    int main(){
        while (scanf("%d %d %d",&n,&m,&k) != EOF){
            int i,j;
            for (i=1;i<=n;i++){
                for (j=1;j<=m;j++){
                    scanf("%d",&matrix[i][j]);
                }
            }
            for (i=1;i<=n;i++) nowx[i] = i;
            for (j=1;j<=m;j++) nowy[j] = j;
            
            for (i=1;i<=k;i++){
                int order,a,temp,b;
                scanf("%d %d %d",&order,&a,&b);
                if (order == 0){
                    temp = nowx[a];
                    nowx[a] = nowx[b];
                    nowx[b] = temp;
                }
                else {
                    temp = nowy[a];
                    nowy[a] = nowy[b];
                    nowy[b] = temp;
                }
            } 
            
            for (i=1;i<=n;i++){
                for (j=1;j<=m;j++){
                    if (j == 1) 
                    printf("%d",matrix[nowx[i]][nowy[j]]);
                    else
                    printf(" %d",matrix[nowx[i]][nowy[j]]);
                }
                printf("
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    DevOps
    DevOps
    Jenkins
    43、android:screenOrientation
    42、使用存放在存assets文件夹下的SQLite数据库
    41、Android中当数据库需要更新时我们该怎么办?
    40、DrawerLayout使用详情
    用Java来写常见的排序算法
    Android高手速成
    16进制 ,Color,Colour转换
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6086538.html
Copyright © 2011-2022 走看看