现在的位置: 首页 > 综合 > 正文

UVa 146 – ID Codes

2013年08月20日 ⁄ 综合 ⁄ 共 646字 ⁄ 字号 评论关闭

题目:求固定集合元素组成序列的下一个。

分析:简单题、排序。从后向前找到第一个增序对ab,前面不变、剩余重新组合。把后面比a大的最小元素与a交换,后面按递增排序即可。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int cmp( const void*a, const void* b )
{
	return *((char*)a) - *((char*)b);
}

int main()
{
	char c='z',data[55],temp;
	while ( scanf("%s",data) && strcmp(data,"#") ) {
		int len = strlen(data)-1;
		int end = len;
		while ( len > 0 && data[len] <= data[len-1] )
			len --;
		if ( len <= 0 ) printf("No Successor\n");
		else {
			for ( int i = end ; i >= len ; -- i )
				if ( data[i] > data[len-1] ) {
					temp = data[len-1];
					data[len-1] = data[i];
					data[i] = temp;
					break;
				}
			qsort(&data[len],end-len+1,sizeof(char),cmp);
			printf("%s\n",data);
		}
	}
	return 0;
}

数据:

abaacb
cbbaa
a
cab
abcd
acbb
azyxwvutsrqpppooonnnmmmlllkkkjjjiiihhhgfedcccbbaaa
#

抱歉!评论已关闭.