首页 > 试题广场 >

二维数组操作

[编程题]二维数组操作
  • 热度指数:98894 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个大小的数据表,你会依次进行以下5种操作:
1.输入,初始化大小的表格。
2.输入x_1y_1x_2y_2,交换坐标在(x_1,y_1)(x_2,y_2)的两个数。
3.输入,在第上方添加一行。
4.输入,在第左边添加一列。
5.输入,查找坐标为的单元格的值。

请编写程序,判断对表格的各种操作是否合法。

详细要求:

1.数据表的最大规格为9行*9列,对表格进行操作时遇到超出规格应该返回错误。
2.对于插入操作,如果插入后行数或列数超过9了则应返回错误。如果插入成功了则将数据表恢复至初始化的大小,多出的数据则应舍弃。

3.所有输入坐标操作,对大小的表格,行号坐标只允许0~m-1,列号坐标只允许0~n-1。超出范围应该返回错误。

本题含有多组样例输入!行列从0开始标号
数据范围:数据组数:
进阶:时间复杂度:,空间复杂度:

输入描述:

输入数据按下列顺序输入:
1 表格的行列值
2 要交换的两个单元格的行列值
3 输入要插入的行的数值
4 输入要插入的列的数值
5 输入要查询的单元格的坐标



输出描述:

输出按下列顺序输出:
1 初始化表格是否成功,若成功则返回0, 否则返回-1
2 输出交换单元格是否成功
3 输出插入行是否成功
4 输出插入列是否成功
5 输出查询单元格数据是否成功

示例1

输入

4 9
5 1 2 6
0
8
2 3
4 7
4 2 3 2
3
3
4 7

输出

0
-1
0
-1
0
0
-1
0
0
-1

说明

本组样例共有2组样例输入。
第一组样例:
1.初始化数据表为4行9列,成功
2.交换第5行1列和第2行6列的数据,失败。因为行的范围应该是(0,3),不存在第5行。
3.在第0行上方添加一行,成功。
4.在第8列左边添加一列,失败。因为列的总数已经达到了9的上限。
5.查询第2行第3列的值,成功。
第二组样例:
1.初始化数据表为4行7列,成功
2.交换第4行2列和第3行2列的数据,失败。因为行的范围应该是(0,3),不存在第4行。
3.在第3行上方添加一行,成功。
4.在第3列左边添加一列,成功。
5.查询第4行7列的值,失败。因为虽然添加了一行一列,但数据表会在添加后恢复成4行7列的形态,所以行的区间仍然在[0,3],列的区间仍然在[0,6],无法查询到(4,7)坐标。       
头像 君君橙
发表于 2021-03-29 16:43:23
感谢讨论区 “辣条虾” 朋友的注释和代码,这屎一样的题干(这真不是在模拟甲方吗?)让我自己敲我可能真的忍不了。 while True: try: m, n = map(int, input().split()) x1, y1, x2, y2 = map(int 展开全文
头像 沉稳的花生米
发表于 2022-03-27 11:08:10
while True: try: m, n = map(int, input().split()) x1, y1, x2, y2 = map(int, input().split()) x, y = int(input()), int(inpu 展开全文
头像 henryboy233
发表于 2021-09-18 22:15:40
需要注意输入顺序,理解题目的难度大于编写的难度 while True: try: m, n = map(int, input().split()) x1, y1, x2, y2=map(int,input().split()) insert_x 展开全文
头像 牛客106501782号
发表于 2020-08-13 20:41:11
题目理解难度远大于编程难度,逻辑很简单,copy了一下别人的代码,然后修改通过的。大部分人没通过的关键在于:对于9行 or 9列的表,无论你插入几都是错的! #include <iostream> using namespace std; int main() { int r, 展开全文
头像 牛客484960258号
发表于 2021-11-22 22:47:24
def create_table(x,y): if 0 < x <= 9 and 0 < y <= 9: global mytable mytable = [[i + j for j in range(y)] for i in rang 展开全文
头像 Damonhmz
发表于 2022-03-13 21:55:44
import java.util.Scanner; /** * HJ83 二维数组操作 - 简单 */ public class HJ083 { public static void main(String[] args) { Scanner sc = new Sca 展开全文
头像 liblab
发表于 2022-02-08 19:40:36
#include<stdio.h> int main(){ int m,n,x1,y1,x2,y2,x,y,x0,y0; while(~scanf("%d %d",&m,&n)){ scanf("%d%d%d%d%d%d%d%d",& 展开全文
头像 爪蛙咖啡
发表于 2022-04-19 21:32:24
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 展开全文
头像 luozha
发表于 2022-05-27 18:00:00
class Table { constructor(x, y) { this.x = x; this.y = y; } success() { print(0); } fail() { print(-1); } init() { l 展开全文
头像 疯小汪
发表于 2021-02-16 17:38:53
#include<iostream> #include<vector> //脑瘫题目,此题并不是矩阵题,而是一道输入合法性的检测题 using namespace std; int main(){      展开全文