球员安排算法

举报
永不言弃 发表于 2022/02/27 15:50:58 2022/02/27
【摘要】 球员安排算法

1、问题描述
  一只业余足球队在安排11名球员的位置,球队踢4-3-3的战术(即1门将,4后卫,3中场,3前锋)。

每名球员有自己愿意踢的位置,比如MS只愿意踢后卫,而CR愿意踢中场和前锋。

作为球队教练的Lazy想知道,有多少种方案可以满足所有11名球员的愿望。

由于球队非常业余,所以不考虑后卫、中场、前锋各自内部的排列,即后卫{A,B,C,D}和后卫{D,C,B,A}是一样的。
输入格式
  11行,每行长度为4的零一串,依次表示球员是否愿意做门将、后卫、中场、前锋。0表示不愿意,1表示愿意。
输出格式
  1行一个整数表示方案数。
样例输入
1000
0100
0100
0100
0100
0010
0010
0010
0001
0001
0001
样例输出
1
2、问题分析
因为只有11个球员,球员数目较少,所以可以直接暴力枚举。确定枚举的最终条件应该满足两个条件1.11个人 2.11个球员各个位置的人数分别满足1 4 3 3时,方案数+1.
3.代码分析
利用python暴搜

def dfs(step):
   if step==12:
      if ans[0]==1 and ans[1]==4 and ans[2]==3 and ans[3]==3:
         global count
         count=count+1
         
      return 
   
   for i in range(4):
      if a[step][i]=='1':
         ans[i]+=1
         dfs(step+1)
         ans[i]-=1


global a
a=[1]
for o in range(11):
   a.append(input())
    global ans
ans=[0]*4
count=0
dfs(1)
print(count)
建立全局变量方案数目,利用递归循环不断向下搜索,当满足球员人数和各个球员位置的分配时,方案数目自加

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。