4555: 【作】【例82.2】 座次问题

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:2 解决:2

题目描述

小 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;
}