- 题目: 输入长度为 N的整数数组 nums ,判断此数组中是否有数字 77 ,若有则返回 true ,否则返回 falsefalse 。
解题算法: 线性查找,即遍历整个数组,遇到 77 则返回 true 。
def f(n):
k=0
for i in range(len(n)):
if n[i]==7:
print( 'true')
k+=1
break
if k==0:print('false')
l = list(map(int,input().split()))
f(l)
- 生物学科中的 “细胞分裂” 即是指数级增长。初始状态为 11 个细胞,分裂一轮后为 2 个,分裂两轮后为 4个,……,分裂 NN 轮后有 2^N2
N
个细胞。
算法中,指数阶常出现于递归,算法原理图与代码如下所示。
def algorithm(N):
if N <= 0: return 1
count_1 = algorithm(N - 1)
count_2 = algorithm(N - 1)
return count_1 + count_2
n=int(input())
print(algorithm(n))
- 阶乘阶对应数学上常见的 “全排列” 。即给定 NN 个互不重复的元素,求其所有可能的排列方案,则方案数量为:
N×(N−1)×(N−2)×⋯×2×1=N!
如下图与代码所示,阶乘常使用递归实现,算法原理:第一层分裂出 N 个,第二层分裂出 N - 1 个,…… ,直至到第 N 层时终止并回溯。
def algorithm(N):
if N <= 0: return 1
count = 0
for _ in range(N):
count += algorithm(N - 1)
return count
n=int(input())
print(algorithm(n))