北航计算机机试11替换矩阵

【问题描述】
先输入两个矩阵A和B,然后输入替换位置(左上角),编写程序将矩阵A中从替换位置开始的子矩阵(与B同样大小)替换为B,并输出替换后的矩阵。
【输入形式】
从控制台先输入矩阵A的行数和列数(行数和列数均大于等于1,小于等于20),然后在新的行上输入矩阵A的各行数字(以一个空格分隔的整数)。再以同样的方式输入矩阵B。最后输入替换位置(用一个空格分隔的两个整数表示,行数和列数都从1开始计数,因此两个整数都大于等于1)。若替换位置超出了矩阵A的行数或列数,则原样输出矩阵A。
【输出形式】
在标准输出上分行输出替换后的矩阵,每行中各数字之间以一个空格分隔。
【输入样例1】
5 6
10 2 34 -1 800 90
2 76 56 -200 23 1
35 0 0 98 8 3000
2000 100 -1 1 2 0
8 7 85 963 496 8
2 3
9 9 9
9 9 9
3 3
【输出样例1】
10 2 34 -1 800 90
2 76 56 -200 23 1
35 0 9 9 9 3000
2000 100 9 9 9 0
8 7 85 963 496 8
【样例1说明】
输入的矩阵A为5行6列,矩阵B是2行3列,替换位置为第3行的第3列,即:将A中第3行第3列开始的、行数为2列数为3的子矩阵替换为B。
【输入样例2】
3 4
10 2 34 -1
2 76 56 -200
35 0 0 98
2 3
9 9 9
9 9 9
2 3
【输出样例2】
10 2 34 -1
2 76 9 9
35 0 9 9
【样例2说明】
输入的矩阵A为3行4列,矩阵B是2行3列,替换位置为第2行的第3列,即:将A中第2行第3列开始的、行数为2列数为3的子矩阵替换为B。但该子矩阵超出了A的范围,所以只实现了部分替换。
【评分标准】
该题要求输出替换后的矩阵,共有5个测试点,提交程序文件名为example2.c或example2.cpp。

思路

  1. 输入矩阵:二维数组存储可以直接存取,时间复杂度为o(1)
  2. 判断最后输入是否超过A的行列值
  3. 若没有超出,对A进行赋值操作,定义i,j进行复制,每次复制要检查是否超过A的行列值且是否超过B的行列值
  4. 输出矩阵,注意格式为每个数字用空格分隔。
    注意一点,就是输入的值是以数组下标为1开始的,所以在执行复制的时候需要正确判断是否超过边界。
#include <stdio.h>

#define MAX_SIZE 20

int main()
{
    int ra,ca,rb,cb;
    int px,py;
    int i,j;
    int a[MAX_SIZE][MAX_SIZE],b[MAX_SIZE][MAX_SIZE];
    scanf("%d%d",&ra,&ca);
    for(i=0;i<ra;i++)
    {
        for(j=0;j<ca;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    scanf("%d%d",&rb,&cb);
    for(i=0;i<rb;i++)
    {
        for(j=0;j<cb;j++)
        {
            scanf("%d",&b[i][j]);
        }
    }
    scanf("%d%d",&px,&py);
    if(px<=ra && py<=ca)
    {
        int r,l;
          for(i=px-1,j=0;i<ra && j<rb ;i++,j++)
          {
              for(r=py-1,l=0;r<ca&& l<cb;r++,l++)
              {
                  a[i][r]=b[j][l];
              }
          }
          }
    for(i=0;i<ra;i++)
    {
        for(j=0;j<ca;j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
全部评论

相关推荐

昨天 14:55
门头沟学院 Java
点赞 评论 收藏
分享
Hakasee:我的简历和你的基本一样,上周去了上海,boss投了三百家, 三家线下面试 第一家没有做题,全是八股和项目,因为第一次面试不怎么熟练,挂了 第二家,给你几个题目(①css垂直居中文字,字体每两秒闪烁一下以及点击弹窗,②给你一个链接,实现可视化地图,③然后是八股,图片性能优化,以及对图片app有什么想法),45分钟内做完,然后老板面试) 第三家特别偏僻,有点阴森,到了之后让了一个工位给我,有四个题目,①格式化时间 年月日当前时间星期几② 正则表达式提取新闻文字,③在文本域输入文字生成选择题以及选项④生成商品排版还是什么来着 三家都是不超过50人的小公司 两家线上牛客笔试(卡伦特,七牛云,但是笔试不仅要考前端,还要考后端,算法,甚至数学题 我的建议是如果只做了这两个vue项目且不怎么熟练的情况下,先沉淀沉淀,把react学了,上海好的公司基本都是react查看图片
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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