第一题 2014-12-1 门禁系统
试题编号: | 201412-1 |
试题名称: | 门禁系统 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。 输入格式 输入的第一行包含一个整数n,表示涛涛的记录条数。 第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。 输出格式 输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。 样例输入 5 1 2 1 1 3 样例输出 1 1 2 3 1 评测用例规模与约定 1≤n≤1,000,读者的编号为不超过n的正整数。 |
解题思路
将输入的数放置到数组中,然后利用双重循环得到每个数是第几次出现,记录并输出即为最后结果。
代码如下:
# 201412-1 门禁系统
n = int(input())
arr = []
res = []
list = input().split()
for i in range(n):
arr.append(int(list[i]))
res.append(i)
for i in range(n):
cou = 0
for j in range(n):
if arr[i] == arr[j]:
cou += 1
res[j] = cou
continue
print(" ".join(str(i) for i in res))
第二题 2014-12-2 Z字形扫描
试题编号: | 201412-2 |
试题名称: | Z字形扫描 |
时间限制: | 2.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:
对于下面的4×4的矩阵, 输入格式 输出格式 输出一行,包含n×n个整数,由空格分隔,表示输入的矩阵经过Z字形扫描后的结果。 样例输入 4 |
解题思路后面更新:
以下是代码(100):可能写的有些繁琐,但是暂时没有更好的思路,大佬有的话可以提示一下。
# 201412-2 Z字形扫描
n = int(input())
arr = []
res = []
for i in range(n):
arr.append(list(map(int, input().split())))
leng = 2 * n -1
for k in range(leng): # 第一个值
if k == 0:
res.append(arr[k][k])
continue
elif k == leng - 1: # 最后一个值
res.append(arr[n-1][n-1])
continue
if k % 2 == 0: # 为偶数行时
if k < n: # 偶数行且为左三角区域
l = k
m = 0
while(l >= 0):
res.append(arr[l][m])
l -= 1
m += 1
else: # 偶数行右三角区域
l = n - 1
x = k - n + 1
while(x < n):
res.append(arr[l][x])
l -= 1
x += 1
else:
if k < n: # 奇数行且为左三角区域
l = k
m = 0
while(l >= 0):
res.append(arr[m][l])
l -= 1
m += 1
else: # 奇数行右三角区域
l = n - 1
x = k - n + 1
while(x < n ):
res.append(arr[x][l])
l -= 1
x += 1
print(" ".join(str(i) for i in res))
以上。