题解 | #矩阵交换#

矩阵交换

http://www.nowcoder.com/practice/ec44d4ff8c794b2f9205bdddbde96817

#include <stdlib.h>
#include <assert.h>

void C_Transposition(int *p, int n, int m, int x, int y)     //列变换
{
    int i;
    for(i = 0; i < n; i++)
    {
        int tmp;
        tmp = p[(x - 1) + m * i];              //x列的位置
        p[(x - 1) + m * i] = p[(y - 1) + m * i];
        p[(y - 1) + m * i] = tmp;
    }
}

void R_Transposition(int *p, int n, int m, int x, int y)     //行变换
{
    int i;
    for(i = 0; i < m; i++)
    {
        int tmp;
        tmp = p[(x - 1) * m + i];
        p[(x - 1) * m + i] = p[(y - 1) * m + i];
        p[(y - 1) * m + i] = tmp;
    }
}

int main()
{
    int n,m,i,j,x,y,k;
    char t;
    int *p;
    scanf("%d %d", &n, &m);
    p = (int*)malloc((n * m) * sizeof(int));
    assert(p);
    for(i = 0; i < m * n; i++)
    {
        scanf("%d ", &p[i]);
    }
    scanf("%d ", &k);
    while(~scanf("%c %d %d", &t, &x, &y))
    {
        if(t == 'c')
        {
            C_Transposition(p, n, m, x, y);
            }
    else if(t == 'r')
        {
            R_Transposition(p, n, m, x, y);
        }
    }
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < m; j++)
        {
            printf("%d ", p[i * m + j]);
        }
        printf("\n");
    }
    return 0;
}
全部评论

相关推荐

一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务