C - The Next Permutation
STL next_permutation()的运用,先预判是否为最大值,即可。
#include<iostream>
#include<string.h>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int a[10001];
int main()
{
int T;
cin >> T;
for (int i = 1; i <= T; i++)
{
memset(a, -1, sizeof(a));
string str;
int num;
cin >> num >> str;
bool big = true;
for (int i = 0; i < str.length(); i++)
{
a[i] = str[i] - '0';
}
int l = str[0];
for (int i = 1; i < str.length(); i++)
{
if (l >= a[i])
{
l = a[i];
}
else
{
big = false;
}
}
if (big)
{
cout << num << " " << "BIGGEST" << endl;
continue;
}
else
{
while (next_permutation(a, a + str.length()))
{
cout << num << " ";
for (int i = 0; i < str.length(); i++)
{
cout << a[i];
}
cout << endl;
break;
}
}
}
}