题解 | #矩阵交换#

矩阵交换

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

#include<stdio.h>
#include<malloc.h>
void swap(int *a,int *b)//设置一个交换的函数
{
    int temp=*a;
    *a=*b;
    *b=temp;
}
int main(void)
{
    int n,m;
    int k;
    scanf("%d %d",&n,&m);
    int **num=(int **)malloc(sizeof(int *)*n);
    for(int i=0;i<n;i++)
        num[i]=(int *)malloc(sizeof(int)*m);
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            scanf("%d",&num[i][j]);
    scanf("%d",&k);
    char *os=(char *)malloc(sizeof(char)*k);
    int **hos=(int **)malloc(sizeof(int *)*k);
    for(int i=0;i<k;i++)
        hos[i]=(int *)malloc(sizeof(int)*2);
    for(int i=0;i<k;i++)//注意要输入字符时,如果直接接收,很有可能接收前面输入的回车换行,所以用getchar()吸收掉
    {
        getchar();
        scanf("%c %d %d",&os[i],&hos[i][0],&hos[i][1]);
    }
    for(int i=0;i<k;i++)
    {
        
        switch(os[i])
        {
            case 'r':
                {
                    for(int j=0;j<m;j++)//如果是r,则进行行交换,
                        swap(&num[hos[i][0]-1][j],&num[hos[i][1]-1][j]);
                    break;
                }
            case 'c':
                {
                    for(int j=0;j<n;j++)//如果是c,则进行列交换
                        swap(&num[j][hos[i][0]-1],&num[j][hos[i][1]-1]);
                    break;
                }
            default:
                break;
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
            printf("%d ",num[i][j]);
        printf("\n");
    }
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 15:39
希望奇迹发生的布莱克...:真的是 现在卷实习就是没苦硬吃
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务