18编程基础之多维数组20题.docx
- 文档编号:4403801
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:21
- 大小:49.13KB
18编程基础之多维数组20题.docx
《18编程基础之多维数组20题.docx》由会员分享,可在线阅读,更多相关《18编程基础之多维数组20题.docx(21页珍藏版)》请在冰豆网上搜索。
18编程基础之多维数组20题
01:
矩阵交换行
描述
给定一个5*5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果。
输入
输入共6行,前5行为矩阵的每一行元素,元素与元素之间以一个空格分开。
第6行包含两个整数m、n,以一个空格分开。
(1<=m,n<=5)
输出
输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开。
样例输入
12212
56783
93053
72146
30824
15
样例输出
30824
56783
93053
72146
12212
来源
1901
02:
同行列对角线的格子
∙查看
∙提交
∙统计
∙提问
总时间限制:
1000ms
内存限制:
65536kB
描述
输入三个自然数N,i,j (1<=i<=n,1<=j<=n),输出在一个N*N格的棋盘中(行列均从1开始编号),与格子(i,j)同行、同列、同一对角线的所有格子的位置。
如:
n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,如下图:
第一列
第二列
第三列
第四列
第一行
(2,3)
第二行
第三行
第四行
当n=4,i=2,j=3时,输出的结果是:
(2,1)(2,2)(2,3)(2,4) 同一行上格子的位置
(1,3)(2,3)(3,3)(4,3) 同一列上格子的位置
(1,2)(2,3)(3,4) 左上到右下对角线上的格子的位置
(4,1)(3,2)(2,3)(1,4) 左下到右上对角线上的格子的位置
输入
一行,三个自然数N,i,j,相邻两个数之间用单个空格隔开。
1<=N<=10。
输出
四行:
第一行:
从左到右输出同一行格子位置;
第二行:
从上到下输出同一列格子位置;
第三行:
从左上到右下输出同一对角线格子位置;
第四行:
从左下到右上输出同一对角线格子位置。
其中每个格子位置用如下格式输出:
(x,y),x为行号,y为列号,采用英文标点,中间无空格。
相邻两个格子位置之间用单个空格隔开。
样例输入
423
样例输出
(2,1)(2,2)(2,3)(2,4)
(1,3)(2,3)(3,3)(4,3)
(1,2)(2,3)(3,4)
(4,1)(3,2)(2,3)(1,4)
03:
计算矩阵边缘元素之和
∙查看
∙提交
∙统计
∙提问
总时间限制:
1000ms
内存限制:
65536kB
描述
输入一个整数矩阵,计算位于矩阵边缘的元素之和。
所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。
输入
第一行分别为矩阵的行数m和列数n(m<100,n<100),两者之间以一个空格分开。
接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。
输出
输出对应矩阵的边缘元素和
样例输入
33
341
371
201
样例输出
15
来源
6375
04:
错误探测
∙查看
∙提交
∙统计
∙提问
总时间限制:
1000ms
内存限制:
65536kB
描述
给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。
你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。
"改变矩阵元素"的操作定义为0变成1或者1变成0。
输入
输入n+1行,第1行为矩阵的大小n(0 输出 如果矩阵符合条件,则输出OK; 如果矩阵仅改变一个矩阵元素就能符合条件,则输出需要改变的元素所在的行号和列号,以一个空格分开。 如果不符合以上两条,输出Corrupt。 样例输入 样例输入1 4 1010 0000 1111 0101 样例输入2 4 1010 0010 1111 0101 样例输入3 4 1010 0110 1111 0101 样例输出 样例输出1 OK 样例输出2 23 样例输出3 Corrupt 来源 6423 05: 计算鞍点 描述 给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。 鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。 例如: 在下面的例子中(第4行第1列的元素就是鞍点,值为8)。 113569 1247810 1056911 86472 1510112025 输入 输入包含一个5行5列的矩阵 输出 如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"notfound" 样例输入 113569 1247810 1056911 86472 1510112025 样例输出 418 06: 图像相似度 描述 给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。 说明: 若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。 两幅图像的相似度定义为相同像素点数占总像素点数的百分比。 输入 第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。 1<=m<=100,1<=n<=100。 之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。 相邻两个数之间用单个空格隔开。 之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。 相邻两个数之间用单个空格隔开。 输出 一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。 样例输入 33 101 001 110 110 001 001 样例输出 44.44 07: 矩阵加法 ∙查看 描述 输入两个n行m列的矩阵A和B,输出它们的和A+B。 输入 第一行包含两个整数n和m,表示矩阵的行数和列数。 1<=n<=100,1<=m<=100。 接下来n行,每行m个整数,表示矩阵A的元素。 接下来n行,每行m个整数,表示矩阵B的元素。 相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。 输出 n行,每行m个整数,表示矩阵加法的结果。 相邻两个整数之间用单个空格隔开。 样例输入 33 123 123 123 123 456 789 样例输出 246 579 81012 08: 矩阵乘法 描述 计算两个矩阵的乘法。 n*m阶的矩阵A乘以m*k阶的矩阵B得到的矩阵C是n*k阶的,且C[i][j]=A[i][0]*B[0][j]+A[i][1]*B[1][j]+……+A[i][m-1]*B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)。 输入 第一行为n,m,k,表示A矩阵是n行m列,B矩阵是m行k列,n,m,k均小于100 然后先后输入A和B两个矩阵,A矩阵n行m列,B矩阵m行k列,矩阵中每个元素的绝对值不会大于1000。 输出 输出矩阵C,一共n行,每行k个整数,整数之间以一个空格分开。 样例输入 323 11 11 11 111 111 样例输出 222 222 222 09: 矩阵转置 ∙查看 ∙提交 ∙统计 ∙提问 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个n行m列的矩阵A,输出它的转置AT。 输入 第一行包含两个整数n和m,表示矩阵A的行数和列数。 1<=n<=100,1<=m<=100。 接下来n行,每行m个整数,表示矩阵A的元素。 相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。 输出 m行,每行n个整数,为矩阵A的转置。 相邻两个整数之间用单个空格隔开。 样例输入 33 123 456 789 样例输出 147 258 369 10: 图像旋转 ∙查看 ∙提交 ∙统计 ∙提问 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数。 1<=n<=100,1<=m<=100。 接下来n行,每行m个整数,表示图像的每个像素点灰度。 相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。 输出 m行,每行n个整数,为顺时针旋转90度后的图像。 相邻两个整数之间用单个空格隔开。 样例输入 33 123 456 789 样例输出 741 852 963 11: 变幻的矩阵 ∙查看 ∙提交 ∙统计 ∙提问 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个NxN(N为奇数,且1<=N<=10)的矩阵,矩阵中的元素都是字符。 这个矩阵可能会按照如下的几种变幻法则之一进行变幻(只会变幻一次)。 现在给出一个原始的矩阵,和一个变幻后的矩阵,请编写一个程序,来判定原始矩阵是按照哪一种法则变幻为目标矩阵的。 1.按照顺时针方向旋转90度; 如: 123 741 456变幻为 852 789 963 2.按照逆时针方向旋转90度; 如: 123 369 456变幻为 258 789 147 3.中央元素不变(如下例中的5),其他元素(如下例中的3)与“以中央元素为中心的对应元素”(如下例中的7)互换; 如: 123 987 456变幻为654 789 321 4.保持原始矩阵,不变幻; 5.如果从原始矩阵到目标矩阵的变幻,不符合任何上述变幻,请输出5 输入 第一行: 矩阵每行/列元素的个数N; 第二行到第N+1行: 原始矩阵,共N行,每行N个字符; 第N+2行到第2*N+1行: 目标矩阵,共N行,每行N个字符; 输出 只有一行,从原始矩阵到目标矩阵的所采取的变幻法则的编号。 样例输入 5 abcde fghij klmno pqrst uvwxy yxwvu tsrqp onmlk jihgf edcba 样例输出 3 2: 图像模糊处理 ∙查看 描述 给定m行n列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理: 1.四周最外侧的像素点灰度值不变; 2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数。 1<=n<=100,1<=m<=100。 接下来n行,每行m个整数,表示图像的每个像素点灰度。 相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。 输出 m行,每行n个整数,为模糊处理后的图像。 相邻两个整数之间用单个空格隔开。 样例输入 45 1000100050 5010020000 5050100100200 1001005050100 样例输出 1000100050 5080100600 508010090200 1001005050100 13: 扫雷游戏地雷数计算 描述 扫雷游戏是一款十分经典的单机小游戏。 它的精髓在于,通过已翻开格子所提示的周围格地雷数,来判断未翻开格子里是否是地雷。 现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格的周围格地雷数。 注: 每个格子周围格有八个: 上、下、左、右、左上、右上、左下、右下。 输入 第一行包含两个整数n和m,分别表示雷区的行数和列数。 1<=n<=100,1<=m<=100。 接下来n行,每行m个字符,‘*’表示相应格子中是地雷,‘? ’表示相应格子中无地雷。 字符之间无任何分隔符。 输出 n行,每行m个字符,描述整个雷区。 若相应格中是地雷,则用‘*’表示,否则用相应的周围格地雷数表示。 字符之间无任何分隔符。 样例输入 33 *? ? ? ? ? ? *? 样例输出 *10 221 1*1 14: 细菌的繁殖与扩散 描述 在边长为9的正方形培养皿中,正中心位置有m个细菌。 假设细菌的寿命仅一天,但每天可繁殖10个后代,而且这10个后代,有两个分布在原来的单元格中,其余的均匀分布在其四周相邻的八个单元格中。 求经过n(1≤n≤4)天后,细菌在培养皿中的分布情况。 输入 输入为两个整数,第一个整数m表示中心位置细菌的个数(2≤m≤30),第二个整数n表示经过的天数(1≤n≤4)。 输出 输出九行九列整数矩阵,每行的整数之间用空格分隔。 整个矩阵代表n天后细菌在培养皿上的分布情况。 样例输入 21 样例输出 000000000 000000000 000000000 000222000 000242000 000222000 000000000 000000000 000000000 来源 北大医学部07计算概论模拟考试1 15: 肿瘤面积 描述 在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。 其它肿瘤内和肿瘤外的点都用255表示。 现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。 已知肿瘤的边缘平行于图像的边缘。 输入 只有一个测试样例。 第一行有一个整数n,表示正方形图像的边长。 其后n行每行有n个整数,取值为0或255。 整数之间用一个空格隔开。 已知n不大于1000。 输出 输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。 样例输入 5 255255255255255 255000255 25502550255 255000255 255255255255255 样例输出 1 提示 如果使用静态数组来表示图片数据,需要将该数组定义成全局变量。 16: 肿瘤检测 描述 一张CT扫描的灰度图像可以用一个N*N(0 我们假设给定的图像中有且只有一个肿瘤。 在图上监测肿瘤的方法如下: 如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。 我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。 任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。 肿瘤的边界点的个数称为肿瘤的周长。 现在给定一个图像,要求计算其中的肿瘤的面积和周长。 输入 输入第一行包含一个正整数N(0 图像的一行用N个整数表示(所有整数大于等于0,小于等于255),两个整数之间用一个空格隔开。 输出 输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,用一个空格分开。 样例输入 6 999999999999 999999509999 999949495051 995020255299 405099999999 999999999999 样例输出 98 17: 二维数组右上左下遍历 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组。 输入 输入的第一行上有两个整数,依次为row和col。 余下有row行,每行包含col个整数,构成一个二维整数数组。 (注: 输入的row和col保证0 输出 按遍历顺序输出每个整数。 每个整数占一行。 样例输入 34 1247 35810 691112 样例输出 1 2 3 4 5 6 7 8 9 10 11 12 18: 神奇的幻方 描述 幻方是一个很神奇的N*N矩阵,它的每行、每列与对角线,加起来的数字和都是相同的。 我们可以通过以下方法构建一个幻方。 (阶数为奇数) 1.第一个数字写在第一行的中间 2.下一个数字,都写在上一个数字的右上方: a.如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列 b.如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行 c.如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方 输入 一个数字N(N<=20) 输出 按上方法构造的2N-1*2N-1的幻方 样例输入 3 样例输出 17241815 23571416 46132022 101219213 11182529 19: 二维数组回形遍历 ∙查看 ∙提交 ∙统计 ∙提问 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍历整个数组。 如图所示: 输入 输入的第一行上有两个整数,依次为row和col。 余下有row行,每行包含col个整数,构成一个二维整数数组。 (注: 输入的row和col保证0 输出 按遍历顺序输出每个整数。 每个整数占一行。 样例输入 44 1234 1213145 1116156 10987 样例输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 20: 蛇形填充数组 描述 用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵。 蛇形填充方法为: 对于每一条左下-右上的斜线,从左上到右下依次编号1,2,...,2n-1;按编号从小到大的顺序,将数字从小到大填入各条斜线,其中编号为奇数的从左下向右上填写,编号为偶数的从右上到左下填写。 比如n=4时,方阵填充为如下形式: 1 2 6 7 3 5 8 13 4 9 1214 10111516 输入 输入一个不大于10的正整数n,表示方阵的行数。 输出 输出该方阵,相邻两个元素之间用单个空格间隔。 样例输入 4 样例输出 1267 35813 491214 10111516
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 18 编程 基础 多维 数组 20
![提示](https://static.bdocx.com/images/bang_tan.gif)