• cf 222b 【数组行列交换操作】.cpp


    题意:

      给出n行m列的数组,并给出k个操作;

      其中操作方法有三种:

      ① c x y 表示把数组的第x列和第y列交换

      ② r x y 表示把数组的第x行和第y行交换

      ③ g x y 表示求数组的第x行第y列的数

    思路:

      用一个数组c 和 r表示第c行和第r列当前值是实际数组中的第几行第几列

    Tips:

      因为n m k给的值都很大

      所以如果按暴力模拟的话,即一个一个交换就会超时

      所以想到用一个虚拟的数组保存当前数组的每一行每一列在原数组中的哪一行哪一列

    Code:

    View Code
     1 #include <stdio.h>
     2 #include <cstring>
     3 #include <ctime>
     4 #include <algorithm>
     5 using namespace std;
     6 
     7 int arr[1010][1010];
     8 int main()
     9 {
    10     int n, m, k;
    11     int r[1010], c[1010];
    12     int tx, ty;
    13     char ord;
    14     while(EOF != scanf("%d %d %d", &n, &m, &k)) {
    15         for(int i = 1; i <= n; ++i) r[i] = i;
    16         for(int i = 1; i <= m; ++i) c[i] = i;
    17 
    18         for(int i = 1; i <= n; ++i)
    19             for(int j = 1; j <= m; ++j)
    20                 scanf("%d", &arr[i][j]);
    21         for(int i = 1; i <= k; ++i) {
    22             scanf("%*c%c %d %d", &ord, &tx, &ty);
    23             if(ord == 'c') {
    24                 swap(c[tx], c[ty]);
    25             } else if(ord == 'r') {
    26                 swap(r[tx], r[ty]);
    27             } else printf("%d\n", arr[r[tx]][c[ty]]);
    28         }
    29     }
    30     return 0;
    31 }

    链接:http://www.codeforces.com/problemset/problem/222/B

  • 相关阅读:
    12款JavaScript表单插件
    10个强大的Javascript表单验证插件推荐
    memcached服务器搭建
    15 个非常吸引人的 jQuery 弹窗插件
    37个超级棒的 jQuery菜单插件
    nginx添加ssl证书认证
    27个jQuery网页拖放操作的插件
    memcached集群负载均衡
    python基础2
    ADO SQL数据库
  • 原文地址:https://www.cnblogs.com/Griselda/p/2963845.html
Copyright © 2020-2023  润新知