早教吧 育儿知识 作业答案 考试题库 百科 知识分享

一道算法题n个小朋友在老师的带领下玩游戏.其中需要分组,老师打算根据大家的衣服颜色分组.已知衣服颜色用0-9的数字表示.老师决定每k个人分为一组.每一组的小朋友必须身穿同一种颜色的

题目详情
一道算法题
n个小朋友在老师的带领下玩游戏.
其中需要分组,老师打算根据大家的衣服颜色分组.
已知衣服颜色用0-9的数字表示.
老师决定每k个人分为一组.每一组的小朋友必须身穿同一种颜色的衣服.
请你告诉老师,是否能成功分组.
Input
仅一组数据
第一行两个整数n,k (1
▼优质解答
答案和解析
import sys

def main():
    n, k = map(int, input().split())
    l = map(int, input().split())
    
    if n != len(l):
        print "Invalid testcase"
        sys.exit(1)
    if n % k != 0:
        print "NO"
        sys.exit(0)
    
    l.sort()
    
    while l:
        t = l[:k]
        c = map(lambda x: x == t[0], t)
        if not all(c):
            print "NO"
            sys.exit(0)
        l = [k:]
    
    print "YES"
    
main()

简单说一下这个解,

想要YES, 那么必须满足几个条件:

1, n个人可以被平均分成x组, 每组k人.

检测这个条件就求模, n % k, 就可以了

2, 每组的学生颜色相同

检测这个条件, 我们先把数列排序,

就相当于不管行不行, 我们先把组分了,

同色的人在一起.

然后就每次取k个人, 检测是否所有的人穿同样颜色的衣服, 就可以了.

while l, 当还有学生剩下

t = l[:k], 取k个学生

c = map(lambda x: x == t[0], t), 拿所有学生跟第一个学生比较

if not all(c), 如果不全都一样

那就NO

如果全都一样, 那就接着对l[k:], 也就是剩下的学生做相同的比较

因为前面检测过了n % k, 所以可以确定每次都能取到k个学生.

所有检测全都通过的话, 那么就是YES了

看了 一道算法题n个小朋友在老师的...的网友还看了以下:

1.八年级二班学生到阅览室借书,班长问老师要分成几个小组,老师风趣地说:假如我把43本书分给各个小  2020-06-05 …

开学了,王老师统计了一下,全班一共收集720篇作文.我们班有4个小组,每组的人数都相等,在暑期里,  2020-06-11 …

一道算法题n个小朋友在老师的带领下玩游戏.其中需要分组,老师打算根据大家的衣服颜色分组.已知衣服颜  2020-06-18 …

第一阶段:8个队分为两组,每组进行单循环比赛,决出前两名参加第二阶段的比赛.每个小组第一阶段有多少  2020-06-28 …

今年暑假,实验中学安排全校师生假期进行社会实践活动,将每班分成三个组,每组派1名教师作为指导老师,为  2020-11-06 …

概率题,陈老师决定每周一到周五从班上抽取某一6人学习小组中随意抽三概率题,陈老师决定每周一到周五从班  2020-11-22 …

大师杯网球赛中,共有八名参赛选手,他们被分成两组,每组四个人.分别进行单循环赛,每组决出前两名,再由  2020-11-24 …

(2013•翔安区一模)某校九年级学生小强与他的学习互助组成员商量,决定毕业时,都将自己的相片送一张  2020-12-01 …

老师将糖给三组同学如给甲组每人得12块如给乙组每人得15块如给丙组每人得20块如把糖同给三组同学每人  2020-12-17 …

问:每个小组要下几盘?2、获得冠军着要下几盘?围棋比赛8名选手参加,分两组每4人一组,规定一盘定胜负  2021-01-14 …