现在的位置: 首页 > 综合 > 正文

女护士

2019年03月11日 ⁄ 综合 ⁄ 共 1485字 ⁄ 字号 评论关闭
问题

“医院里的医务人员,包括我在内,总共是16名医生和护士。下面讲到
的人员情况,无论是否把我计算在内,都不会有任何变化。在这些医务人员
中:
(1)护士多于医生。
(2)男医生多于男护士。
(3)男护士多于女护士。
(4)至少有一位女医生。”
这位说话的人是什么性别和职务?

分析

因为是小规模问题,适合用暴力破解法。枚举所有情况,找出符合规则的。此类问题都可以用这种方法。

代码


import
 copy


satisfied_tuple

=
[]


for
 male_doctor 
in
 range(0,
17
):

    

for
 male_nurse 
in
 range(0,
17
):

        

for
 female_nurse 
in
 range(0,
17
):

            

for
 female_doctor 
in
 range(0,
17
):

                rule

=
[(male_nurse
+
female_nurse)
>
(male_doctor
+
female_doctor)

                      ,male_doctor

>
male_nurse

                      ,male_nurse

>
female_nurse

                      ,female_doctor

>=
1


                      ,male_doctor

+
male_nurse
+
female_nurse
+
female_doctor
==
16
]

                result

=
reduce(
lambda
 x,y:x 
and
 y,rule)

                

if
 result:

                    satisfied_tuple.append([male_doctor,female_doctor,male_nurse,female_nurse])


roles

=
[
'
male_doctor
'
,
'
female_doctor
'
,
'
male_nurse
'
,
'
female_nurse
'
]            


for
 tuple 
in
 satisfied_tuple:

    

for
 i 
in
 range(len(tuple)):

        new_tuple

=
copy.copy(tuple)

        new_tuple[i]

-=
1


        male_doctor,female_doctor,male_nurse,female_nurse

=
new_tuple

        new_rule

=
[(male_nurse
+
female_nurse)
>
(male_doctor
+
female_doctor)

                      ,male_doctor

>
male_nurse

                      ,male_nurse

>
female_nurse

                      ,female_doctor

>=
1


                      

#
,male_doctor+male_nurse+female_nurse+female_doctor==16


                  ]

        result

=
reduce(
lambda
 x,y:x 
and
 y,new_rule)

        

if
 result:

            

print
 roles[i]

    
结果

输出结果是: 女护士

 

抱歉!评论已关闭.