4555: 【作】【82.2】 座次问题
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:10
解决:9
题目描述
小 A 的学校,老师好不容易解决了市赛的报名问题,现在老师又犯愁了。现在有 位同学参加比赛,但是老师想给他们排座位,但是排列方式太多了。老师非常想弄明白最后的排座次的结果是什么样子的,到底有多少种结果。
请设计一个程序帮助老师。最后输出各种情况的人名即可,一行一种情况,每种情况的名字按照报名即输入顺序排序。
输入
第一行 输入 ;
第二行 到 第 行 共输入 个人名。
由于小 学校承办能力实在有限,所以其中 小于等于 10 人。
输出
输出各种情况的人名即可,一行一种情况,每种情况的名字按照报名即输入顺序排序。
样例输入 复制
3
xiaowang
xiaoA
xiaoli
样例输出 复制
xiaowang xiaoA xiaoli
xiaowang xiaoli xiaoA
xiaoA xiaowang xiaoli
xiaoA xiaoli xiaowang
xiaoli xiaowang xiaoA
xiaoli xiaoA xiaowang
提示
#include<bits/stdc++.h>
using namespace std;
int main() {
vector < string > M1;
vector < int > M2;
int N;
string name;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> name;
M1.push_back(name);
M2.push_back(i);
}
do {
for (vector < int > ::iterator it = M2.begin(); it != M2.end(); it++) {
cout << M1[( * it)] << " ";
}
cout << endl;
} while (next_permutation(M2.begin(), M2.end()));
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int a[15];
string s[15];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
a[i] = i;
cin >> s[i];
}
do {
for (int i = 1; i <= n; i++) {
cout << s[a[i]] << " ";
}
cout << endl;
} while (next_permutation(a + 1, a + n + 1));
return 0;
}