D的小L
时间限制:
4000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给匡匡出了个题目想难倒匡匡(小L很D吧
),有一个数n(0<n<10),写出1到n的全排列,这时匡匡有点囧了
,,,聪明的你能帮匡匡解围吗?
-
输入
- 第一行输入一个数N(0<N<10),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个整数x(0<x<10) 输出
-
按特定顺序输出所有组合。
特定顺序:每一个组合中的值从小到大排列,组合之间按字典序排列。
样例输入
-
2 2 3
样例输出
-
12 21 123 132 213 231 312
321
-
这道题,我用了一个全排列的算法(next_permutation())就是这个算法,帮我节省了好多时间
-
具体代码如下
-
#include<iostream>
#include<algorithm>//使用算法时必须添加的头文件
using namespace std;
string s="123456789";//定义一个字符串,为下面使用substr函数提供参数
int main()
{
int N;
cin>>N;
while(N--)
{
int n;
cin>>n;
do
cout << s.substr(0, n) << endl;
while(next_permutation(s.begin(), s.begin()+n)); //全排列方法
}
return 0;
}