大学生想要做程序员,除了牢固的编程能力之外还需要灵活的思维,这也是企业对于大学生考察的两大重点:编码和算法设计思维。
由于排序问题都已经烂大街,所以今天给大家看的是我们笔试试卷中另一种算法题,也是我们针对于大学生笔试设计的最后一题,网上也能搜到,编程实现方式其实不限,但是我们要求使用Python。话不多说,直接看题。
Python
一、题目:3V3球员比赛,根据约束条件求队员对阵名单
题目描述:
题目
Request
Three players in team P and team Q will be choosed to run prizes. Members in team P are A,B,C, in team Q are X,Y,Z. The competition lists are decided by lots. Below information has been known:A's opponent is not X;C doesn't compete with X, Z. Please try to program to decide the competition lists using Python.
中文参考
从两只球队中各选择三位球员进行比赛。P队球员是A,B,C,Q队球员是X,Y,Z。比赛对手由抽签决定。已知:A的对手不是X,C不会和X,Z进行比赛。请尝试使用Python编程求出比赛名单。
二、题目解析
已知条件:A的对手不是X,C的对手不是X,Z
隐藏条件:对手之间互斥,即每一个球员对手无重复
求解思路:
1、A、B、C的对手都可能是X,Y,Z之中的一位
2、A的对手选定之后,B,C的对手只能在剩下的两位中选择(比如A对X,那么B,C只能对Y或Z)
其实这些都是很容易就能想到的,当然对大学生来说还是有一些难度的,尤其是怎么用代码实现,所以说编程对于思维的要求也是很高的。话不多说,下面直接看代码实现。
思维方式
三、代码实现
代码格式
源码:
P=['x','y','z']
# i表示A的对手
# j表示B的对手
# k表示C的对手
def playList():
for i in range(0,3):
for j in range(0,3):
if P[i] != P[j] : # A,B的对手不能相同
for k in range(0,3):
if P[i] != P[k] and P[j] != P[k]: # B,C的对手不能和A相同
if P[i] != 'x' and P[k] != 'x' and P[k] != 'z':
print("A 的对手是:",P[i])
print("B 的对手是:",P[j])
print("C 的对手是:",P[k])
if __name__ == "__main__":
playList()
持续更新Python面笔试考题,助你成功突破企业门槛
下期见