题目描述
输入描述:
输入数据按下列顺序输入:
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)坐标。
代码实现如下:
lists = []
while True:
try:
n = 0
data = []
list1 = input().split(" ")
if n ==4:
n =0
else:
list2 = []
for i in list1:
list2.append(int(i))
lists.append(list2)
n = n+1
except:
break
num = 0
list_data = []
#二维数组行和列
m_line = 0
n_line = 0
for i in lists:
flag = True
if num ==5:
num = 0
list_data = []
#给多维数组赋值
if num ==0 and len(i) ==2:
m_line = i[0]
n_line=i[1]
if m_line > 9 or n_line >9:
flag = False
else:
list_data = [[0 for j in range(n_line)]for k in range(m_line)]
#交换的两个单元格的行列值
if num ==1 and len(i) ==4:
num1 = 1
if min(i)<0 or i[0]>=m_line or i[2]>=m_line or i[1]>=n_line or i[3]>=n_line:
flag = False
if flag == True:
data = list_data[i[0]][i[1]]
list_data[i[0]][i[1]] = list_data[i[2]][i[3]]
list_data[i[2]][i[3]] = data
#插入的行的数值
if num ==2 and len(i) ==1:
if m_line + 1 >9 or i[0]>=m_line:
flag = False
else:
a = [0 for k in range(m_line)]
list_data.insert(i[0],a)
#插入的列的数值
if num ==3 and len(i) ==1:
if n_line + 1 > 9 or i[0]>=n_line:
flag = False
else:
for k in list_data:
k.insert(i[0],1)
#查询单元格的坐标
if num ==4 and len(i) ==2:
if i[0] >= m_line or i[1] >=n_line:
flag = False
else:
data4 = list_data[i[0]][i[1]]
if flag == True:
print(0)
else:
print(-1)
num = num + 1