1、分解质因数
题目:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,否则称为合数。请将一个正整数分解质因数,如果输入的数不是合数,打印其本身,否则按照从小到大的属性打印出其质因子。
输入样例:100
输出样例:
2
2
5
5
python代码:
def primeFactorization(num):
even = 2
res = []
while num >= even:
if num // even == 0:
res.append(even)
num = num // even
else:
even += 1
return res
_num = int(input())
res = primeFactorization(_num)
for res_cur in res:
print(str(res_cur))
2、单词是否存在于网格中
题目:给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
输入描述:
非最后一行的其他行表示二维字母数组(每行通过英文逗号分割),最后一行表示待搜索的单词
输出描述:
布尔类型,表示是否存在
样例输入
A,B,C,E
S,F,C,S
A,D,E,E
ABCCED
样例输出
true
使用深度优先遍历,对该点的上下左右路径进行遍历,搜索字符
python代码:
def exist(board, word):
if not board:
return False
for i in range(len(board)):
for j in range(len(board[0])):
if dfs(board, word, i, j):
return True
return False
def dfs(board, word, i, j):
if board[i][j] == word[0]:
if not word[1:]:
return True
board[i][j] = ''
# 往上
if i > 0 and dfs(board, word[1:], i - 1, j):
return True
# 往下
if i < len(board) - 1 and dfs(board, word[1:], i + 1, j):
return True
# 往左
if j > 0 and dfs(board, word[1:], i, j - 1):
return True
# 往右
if j < len(board[0]) - 1 and dfs(board, word[1:], i, j + 1):
return True
board[i][j] = word[0]
return False
else:
return False
if __name__ == "__main__":
board = []
while True:
word = input().strip()
if len(word.split(",")) == 1:
break
else:
board.append(list(word.split(",")))
if exist(board, word):
print("true")
else:
print("false")