ID Codes
ID Codes |
It is 2084 and the year of Big Brother has finally arrived, albeit acentury late. In order to exercise greater control over its citizensand thereby to counter a chronic breakdown in law and order, theGovernment decides on a radical measure--all citizens are to have atiny microcomputer surgically implanted in their left wrists. Thiscomputer will contains all sorts of personal information as well as atransmitter which will allow people's movements to be logged andmonitored by a central computer. (A desirable side effect of thisprocess is that it will shorten the dole queue for plastic surgeons.)
An essential component of each computer will be a uniqueidentification code, consisting of up to 50 characters drawn from the26 lower case letters. The set of characters for any given code ischosen somewhat haphazardly. The complicated way in which the code isimprinted into the chip makes it much easier for the manufacturer toproduce codes which are rearrangements of other codes than to producenew codes with a different selection of letters. Thus, once a set ofletters has been chosen all possible codes derivable from it are usedbefore changing the set.
For example, suppose it is decided that a code will contain exactly 3occurrences of `a', 2 of `b' and 1 of `c', then three of the allowable 60 codes under these conditions are:
abaabc abaacb ababac
These three codes are listed from top to bottom in alphabetic order.Among all codes generated with this set of characters, these codesappear consecutively in this order.
Write a program to assist in the issuing of these identificationcodes. Your program will accept a sequence of no more than 50 lowercase letters (which may contain repeated characters) and print thesuccessor code if one exists or the message `No Successor' if thegiven code is the last in the sequence for that set of characters.
Input and Output
Input will consist of a series of lines each containing a stringrepresenting a code. The entire file will be terminated by a lineconsisting of a single #.
Output will consist of one line for each code read containing thesuccessor code or the words `No Successor'.
Sample input
abaacb cbbaa #
Sample output
ababac No Successor 用的是STL的模板 头文件: <algorithm> 函数名 next_permutation(参数) 作用:寻找当前序列的下一个排序(按字典序的顺序)#include<stdio.h> #include<stdlib.h> #include<string.h> #include<algorithm> using namespace std; int main (){ char str[100]; while(gets(str) != NULL) { if(str[0] == '#') break; int len; len = strlen(str); if(next_permutation(str, str+len)) puts(str); else printf("No Successor\n"); } return 0; }