2014
03-13

# The Next Permutation

For this problem, you will write a program that takes a (possibly long) string of decimal digits, and outputs the permutation of those decimal digits that has the next larger value (as a decimal number)
than the input number. For example:
123 -> 132
279134399742 -> 279134423799
It is possible that no permutation of the input digits has a larger value. For example, 987.

The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. Each data set is a single line that contains the data set number, followed by a space, followed by up to 80 decimal digits which is the input value.

The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. Each data set is a single line that contains the data set number, followed by a space, followed by up to 80 decimal digits which is the input value.

3
1 123
2 279134399742
3 987

1 132
2 279134423799
3 BIGGEST

STL中的一个函数next_permutation()的运用~~

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include <cstring>
using namespace std;
char a[100];
int main()
{
int t,i,len,n;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d %s",&n,a);
len=strlen(a);
if (next_permutation(a,a+len)) printf("%d %s\n",i,a);
else
printf("%d BIGGEST\n",i);
}
return 0;
}