Python 穷举算法(Exhaustive Attack method)

Python 穷举算法(Exhaustive Attack method)

                                                         2016年11月    CCUT北湖校区

  • 穷举算法又称列举法,其基本思想是逐一列举问题所涉及的所有情况。
  • 穷举法常用于解决“是否存在”和“有多少种可能”的问题。
  • 应用穷举法时应注意对问题所涉及的有限种情形须—列举,既不能重复,又不能遗漏。
  • 穷举法常应用循环结构体来实现。
  • 理论上,穷举法可以解决可计算领域中的各种问题。尤其是在计算机速度非常高的今天,穷举的应用领域非常广阔。
  • 在实际应用中,通常要解决的问题规模不大,用穷举设计的算法其运算速度是可以接受的。此时,设计一个更高效的算法代价不值得。

百鸡百钱问题


已知:公鸡5元一只,母鸡3元一只,小鸡一元3只。现用100元钱买了100只鸡。
问:公鸡母鸡小鸡各几只?

# -*- coding: utf-8 -*-
'''
Title: The question of 'Hundreds of chickens'
'''

for i in range(100):
	for j in range(100):
    	for k in range(100):
        	number = i + j +k
        	price = i*5 + j*3 + k*(1/3)
        	if (number <= 100) & (price <= 100) & (k % 3 == 0):
            	print("There are %dck, %d hen,and %d chick" % (i,j,k))

数学问题


有i,j,k,m,n五个字母分别代表0~9的数字,满足下面条件:

 i  j  k  m  n  

 *              i   
 --------------------
 n  n  n  n  n  n  

求i,j,k,m,n的实际值

# -*- coding: utf-8 -*-
'''
Title: The question of math
'''
for i in range(1,10):
	for j in range(10):
    	for k in range(10):
        	for m in range(10):
            	for n in range(10):
                	num = 10000*i + 1000*j + 100*k +10*m + n
               		c = n*111111
                	if  num*i == c:
                    	print(i,j,k,m,n)

鸡兔同笼问题


鸡兔同笼问题最早记载于1500年前的《孙子兵法》,这是一个非常有名的问题。鸡兔同笼的原文如下:

今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几只?
这个问题的大致意思是:在一个笼子里关着若干只鸡和若干只兔,从上面数共有35个头,从下面数共有94只脚。问笼中鸡和兔的数量各是多少?

# -*- coding: utf-8 -*-
'''
Title: The question of Chicken and rabbit cage
'''

for i in range(1,35):
	for j in range(1,35):
    	if  (i*2 + j*4) == 94 and (i + j == 35):
        	print("There are %d chickens,and %d rabbits" % (i,j))


# achieve by list comprehension

list = [(i,j) for i in range(1,35) for j in range(1,35) if (i*2 + j*4) == 94 and i + j ==35]
全部评论

相关推荐

勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务