思路
next_permutation() + 模拟
next_permutation():
1. return true or false
拓展
- prev_permutation()
- 直接算出第i个排列: ! + %
- 更多…
- 实现next_permutation() AcWing 火星人.420
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int a[4];
int main()
{
int cnt = 0;
while(cin >> a[0] >> a[1] >> a[2] >> a[3], a[0] || a[1] || a[2] || a[3])
{
if(cnt ++ ) cout << endl;
sort(a, a + 4);
int flg = 0, t = -1;
do
{
if(a[0] == 0)
continue;
else if(flg == 0)
{
flg = 1;
for(int i = 0; i < 4; i ++ ) cout << a[i];
}
else if(t == a[0])
{
cout << " ";
for(int i = 0; i < 4; i ++ ) cout << a[i];
}
else
{
cout << endl;
for(int i = 0; i < 4; i ++ ) cout << a[i];
}
t = a[0];
}while(next_permutation(a, a + 4));
cout << endl;
}
return 0;
}