UVA 146 (13.07.18)

 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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值