【基础入门题031】三色球问题

简介: 【基础入门题031】三色球问题

【基础入门题】2021.11.27


口袋中共有12个球,红白黑的个数分别3、3、6,

从中任取8个,问共有多少种可能的颜色搭配?

编程语言:包括但不限于Python

题目来源:派森特给站每日刷题频道  


————————————————

方法一:三重循环

R, W, B = 3, 3, 6
pick, count = 8, 0
for r in range(R+1):
    for w in range(W+1):
        for b in range(B+1):
            if r + w + b == pick:
                count += 1
                print(r, w, pick-r-w)
print('共有可能的颜色搭配数:',count)



运行结果:


0 2 6

0 3 5

1 1 6

1 2 5

1 3 4

2 0 6

2 1 5

2 2 4

2 3 3

3 0 5

3 1 4

3 2 3

3 3 2

共有可能的颜色搭配数: 13




方法二:二重循环

R, W, B = 3, 3, 6
pick, count = 8, 0
for r in range(R+1):
    for w in range(W+1):
        if B + r + w >= pick:
            count += 1
            print(r, w, pick-r-w)
print('共有可能的颜色搭配数:',count)



运行结果:


0 2 6

0 3 5

1 1 6

1 2 5

1 3 4

2 0 6

2 1 5

2 2 4

2 3 3

3 0 5

3 1 4

3 2 3

3 3 2

共有可能的颜色搭配数: 13

方法三:二重循环,以黑优先

R, W, B = 3, 3, 6
pick, count = 8, 0
for b in range(B+1):
    for w in range(W+1):
        if 0<=8-b-w<=3:
            count += 1
            print(8-b-w,w,b)
print('共有可能的颜色搭配数:',count)



运行结果:

3 3 2

3 2 3

2 3 3

3 1 4

2 2 4

1 3 4

3 0 5

2 1 5

1 2 5

0 3 5

2 0 6

1 1 6

0 2 6

共有可能的颜色搭配数: 13

方法四:组合库函数

from itertools import combinations as comb
balls = sorted(list(set(list(comb('r'*3+'w'*3+'b'*6, 8)))))
for ball in balls:
    print(ball.count('r'),ball.count('w'),ball.count('b'))
print('共有可能的颜色搭配数:',len(balls))



运行结果:

2 0 6

3 0 5

3 1 4

3 2 3

3 3 2

2 1 5

2 2 4

2 3 3

1 1 6

1 2 5

1 3 4

0 2 6

0 3 5

共有可能的颜色搭配数: 13

目录
相关文章
|
8月前
|
存储 Java 编译器
C++基础入门详解(一)
C++基础入门详解(一)
|
4月前
|
编译器 Linux C语言
C++基础入门
C++基础入门
|
8月前
|
存储 编译器 C++
C++基础入门(超详细)
C++基础入门(超详细)
|
8月前
|
存储 编译器 C语言
C++基础入门详解(二)
C++基础入门详解(二)
|
存储 JavaScript 前端开发
JavaScript.01[基础入门]
JavaScript.01[基础入门]
76 4
JavaScript.01[基础入门]
|
存储 程序员 编译器
C++基础入门教程(1)
C++基础入门教程(1)
C++基础入门教程(4)
C++基础入门教程(4)
|
搜索推荐 编译器 C++
C++基础入门教程(3)
C++基础入门教程(3)
|
Python
【基础入门题006】求身份证校验位是否正确
【基础入门题006】求身份证校验位是否正确
85 0