例如,在右侧5×5的方阵中可以产生[1,3,4,12,21,234,243,324,342,423,432]共11个数。其中数“234”的产生过程可以是:选择第4行第2列为起点,第一步吃掉2,接着往右走三步吃掉3,再往右走一步穿越到对面的4,吃掉它成为“234”,共五步。其中“1234”或“123”等整数是不可能出现的。
请回答以下问题。
dx = [0, 1, 0, -1] # 模拟贪吃蛇往四个方向游走时行号变化的数组
dy = [1, 0, -1, 0] # 列号变化数组
n = int(input()) # 方阵的大小
a, b = [], []
for i in range(n):
s = input().strip().split() #方阵中的一行数据,“.”号和数字字符都以空格分隔
a.append(s)
def calc(i, j, p):
x, y, res = i, j, 0
if '0' <= a[x][y] <= '9':
res = int(a[x][y])
for i in range(n-1):
x = # 产生新的行号
y = # 产生新的列号(与行号类似),代码略
if '0' <= a[x][y] <= '9':
res = res * 10 + int(a[x][y])
return res
for i in range(n):
for j in range(n):
for k in range(4):
num =
if num > 0:
b.append(num)
print(b) # 输出所有可能能产生的整数(可能会产生重复的整数)
b = [1, 12, 23, 23, 23, 35, 35,146] 输入输出示例: 请输入待查找的整数:23 小于等于23的数共有5个 请输入待查找的整数:31 小于等于31的数共有5个 |
bn = len(b)
for i in range(bn-1):
for j in range( ):
if b[j] > b[j+1]:
b[j], b[j+1] = b[j+1], b[j]
key = int(input("请输入待查找的整数:"))
i, j = 0, bn-1
while i <= j:
m = (i + j) // 2
if :
i = m + 1
else:
j = m - 1
print("小于等于", key, "的数共有", i, "个")