4556: 【作】【例82.3】 公平抽签
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:2
解决:1
题目描述
小明的学校,市赛的参赛名额非常有限,只有
个名额,但是共有 个人报名。作为老师非常苦恼,他不知道该让谁去,他在寻求一个绝对公平的方式。
于是他准备让大家抽签决定,即
个签是去,剩下的是不去。小明非常想弄明白最后的抽签结果会有多少种不同到情况,请你设计一个程序帮帮小明!
输入
输入第一行包含两个字符
, ,其含义如题所述。接下来第二行到第
行每行包含一个字符串 ,表示个人名。 。输出
输出共若干行,每行包含
个字符串,表示该结果被选中到人名。同一个方案中按读入的人名顺序输出,不同方案的输出顺序任意。
样例输入 复制
3 2
xiaowang
xiaoA
xiaoli
样例输出 复制
xiaowang xiaoA
xiaowang xiaoli
xiaoA xiaoli
提示
#include<bits/stdc++.h> using namespace std; int n, m; string a[20]; int main() { cin >> n >> m; for (int i = 0; i < n; i++) cin >> a[i]; int U = 1 << n; for (int S = 0; S < U; S++) if (__builtin_popcount(S) == m) { for (int i = 0; i < n; i++) if (S & (1 << i)) cout << a[i] << ' '; cout << endl; } return 0; }