-
有1,2,3,4四个数字,能够组成多少个无重复的三位数,它们分别是多少?
'''
有1,2,3,4四个数字,能够组成多少个无重复的三位数,它们分别是多少?
'''
list = []
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if(i!=j) and (j!=k) and (k!=i):
m = [i,j,k]
list.append(m)
print(m)
print('共有{}位'.format(len(list)))
总结:
这个题目主要是枚举法
一. 枚举算法的思想:
- 枚举算法的定义:
在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么该结论是可靠的,这种归纳方法叫做枚举法。 - 枚举算法的思想是:
将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,保留合适的,舍弃不合适的。 - 使用枚举算法解题的基本思路如下:
(1)确定枚举对象、范围和判定条件。
(2)逐一枚举可能的解并验证每个解是否是问题的解。 - 枚举算法步骤:
(1)确定解题的可能范围,不能遗漏任何一个真正解,同时避免重复。
(2)判定是否是真正解的方法。
(3)为了提高解决问题的效率,使可能解的范围将至最小, -
枚举算法的流程图如下所示:
拓展练习
#枚举法拓展
'''公鸡每只5元,母鸡每只3元,三只小鸡1元,用100元买100只鸡,问公鸡、母鸡、小鸡各多少只?'''
for gj in range(1,21):
for mj in range(1,34):
xj = 100 - mj - gj
if gj*5 + mj*3 + xj/3*1 == 100:
print('公鸡{}只,母鸡{}只,小鸡{}只'.format(gj,mj,xj))
#枚举法拓展
'''题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身
分析:ABC = A**3 + B**3 + C**3
'''
for a in range(1,10):
for b in range(10):
for c in range(10):
if a**3 + b**3 + c**3 == a*100 + b*10 + c:
print(a,b,c)
#枚举法拓展
'''
问题描述:在下面的算式中,添加“+”、“-”,“*”,“/”,4个运算符,使得这个式子成立。
5 5 5 5 5 = 5
算法分析:
上述式子左侧有5个数字,一共需要4个运算符。根据题目要求,两个数字之间的运算符只能有4中选择。在
具体编程时,可以通过循环来填入各种运算符,然后再判断算式左侧的值是否等于右侧的值。并保证,当填入的
是除号时,则右侧的数不能为0,并且乘除的优先级高于加减的优先级。
'''
#
list = ['+','-','*','/']
for a in list:
for b in list:
for c in list:
for d in list:
#上面都是遍历list列表
#下面是先利用format函数构成四则运算的字符串形式,然后用eval函数将str型的四则运算
#转化成float类型,然后判断筛选选出运算结果小于等于5的那些四则运算
#再将这些float的四则运算转化为整型,并判断结果是否为5,然后再输出
sum_base = eval('5{}5{}5{}5{}5'.format(a, b, c, d))
if sum_base <= float(5):
sum = int(sum_base)
if sum == 5:
print('5{}5{}5{}5{}5 = 5'.format(a, b, c, d))
下面是运算结果,不过这题我拿不准,网上也没有资料,若朋友有更好的方法,欢迎留言交流,感谢
D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题1.py
5+5+5-5-5 = 5
5+5-5+5-5 = 5
5+5-5-5+5 = 5
5+5-5*5/5 = 5
5+5-5/5*5 = 5
5+5*5-5*5 = 5
5+5*5/5-5 = 5
5+5/5-5/5 = 5
5+5/5*5-5 = 5
5-5+5+5-5 = 5
5-5+5-5+5 = 5
5-5+5*5/5 = 5
5-5+5/5*5 = 5
5-5-5+5+5 = 5
5-5*5+5*5 = 5
5-5*5/5+5 = 5
5-5/5+5/5 = 5
5-5/5*5+5 = 5
5*5+5-5*5 = 5
5*5-5*5+5 = 5
5*5*5/5/5 = 5
5*5/5+5-5 = 5
5*5/5-5+5 = 5
5*5/5*5/5 = 5
5*5/5/5*5 = 5
5/5+5-5/5 = 5
5/5-5/5+5 = 5
5/5*5+5-5 = 5
5/5*5-5+5 = 5
5/5*5*5/5 = 5
5/5*5/5*5 = 5
5/5/5*5*5 = 5
Process finished with exit code 0
网友评论