洛谷1036

1036 python写法

洛谷1036_第1张图片

python库函数

本来是想学习dfs,但是发现了子序列这个库,本以为这个库只能用于写出字符串的子序列,结果发现列表类型也可以使用,太折磨了。

import itertools
def sushu(a):
    for i in range(2,a):
        if(a%i==0):
            return False
    return  True



#输入一位矩阵
n,m=map(int,input().split(' '))
x=[str(i) for i in input().split()]
result=0
li=list(itertools.combinations(x,m))
for i in range(len(li)):  
    if(sushu(sum(map(int,list(li[i]))))):
        result+=1
print(result)

dfs递归

global ans
ans=0
def dfs(m,sum,startx):
    '''
    /最重要的递归
//m代表现在选择了多少个数
//sum表示当前的和
//startx表示升序排列,以免算重
'''
    if(m==k):#如果选完了的话
        if(sushu(sum)):
            ans+=1
        return
    for i in range(startx,n):
        #递归
        #步数要加一,和也要加1
        #升序起始值要变成i+1,以免算重
        dfs(m+1,sum+x[i],i+1)
    return

dfs(0,0,0)

你可能感兴趣的:(笔记,算法,图论,深度优先)