一、题目描述
我国有四大淡水湖。
小吴说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。
小徐说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。
小王说:洪泽湖最小,洞庭湖第三。
小唐说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
这4个湖的大小均不相等,4个人每人仅答对一条。
排序湖的大小:
二、问题分析
循环穷举并保证没有大小相同的湖即可,没有难度。
三、代码实现
'''规定:HZ:a,DT:b,BY:c,TH:d'''
for a in range(1,5):
for b in range(1,5):
if (a==b):#保证湖大小不同
continue
for c in range(1,5):
if (a==c)|(b==c):
continue
for d in range(1,5):
if (a==d)|(b==d)|(c==d):
continue
#以下翻译翻译甲乙丙丁的话
if (b==1 and a!=4 and c!=3) or (b!=1 and a==4 and c!=3) or (b!=1 and a!=4 and c==3):
if(a==1 and b!=4 and c!=2 and d!=3) or (a!=1 and b==4 and c!=2 and d!=3) or (a!=1 and b!=4 and c==2 and d!=3) or (a!=1 and b!=4 and c!=2 and d==3):
if (a==4 and b!=3) or (a!=4 and b==3):
if (c==1 and d!=4 and a!=2 and b!=3) or (c!=1 and d==4 and a!=2 and b!=3) or (c!=1 and d!=4 and a==2 and b!=3) or (c!=1 and d!=4 and a!=2 and b==3):
print("洞庭湖的排名为", b)
print("洪泽湖的排名为", a)
print("潘阳湖的排名为", c)
print("太湖的排名为", d)
'''代码优化:'''
'''每个湖大小不同只要保证a+b+c+d==10 & b*a*c*d==24 即可,so:'''
for b in range(1,5):
for a in range(1,5):
for c in range(1,5):
for d in range(1,5):
if (b+a+c+d==10) and (b*a*c*d==24):
#保证每个湖大小不同
if (b==1 and a!=4 and c!=3) or (b!=1 and a==4 and c!=3) or (b!=1 and a!=4 and c==3):
if(a==1 and b!=4 and c!=2 and d!=3) or (a!=1 and b==4 and c!=2 and d!=3) or (a!=1 and b!=4 and c==2 and d!=3) or (a!=1 and b!=4 and c!=2 and d==3):
if (a==4 and b!=3) or (a!=4 and b==3):
if (c==1 and d!=4 and a!=2 and b!=3) or (c!=1 and d==4 and a!=2 and b!=3) or (c!=1 and d!=4 and a==2 and b!=3) or (c!=1 and d!=4 and a!=2 and b==3):
print("洞庭湖的排名为", b)
print("洪泽湖的排名为", a)
print("潘阳湖的排名为", c)
print("太湖的排名为", d)