UvaOJ 10098 Generating Fast, Sorted Permutation

来源:互联网 发布:centos 关闭selinux 编辑:程序博客网 时间:2024/05/20 19:46

生成“下一个排列”

思想还是参见我的这篇文章

UvaOJ 146 ID Codes

#include <stdio.h>#include <string.h>#include <stdlib.h>char s[11];int l, n;int cmp(const void* a, const void* b) {return *(char*)a - *(char*)b;}void swap(int l, int r) {char t = s[l];s[l] = s[r];s[r] = t;}void reverse(int l, int r) {for ( ; l<r ; l++, r--)swap(l, r);}int main() {scanf("%d", &l);while (l--) {int i=1, j;scanf("%s", s);n = strlen(s);qsort(s, n, sizeof(char), cmp);printf("%s\n", s);while (i) {for (i=n-1 ; i>0 ; i--)if (s[i-1] < s[i]) {for (j=i+1 ; j<n ; j++)if (s[j] <= s[i-1])break;swap(i-1, j-1);reverse(i, n-1);printf("%s\n", s);break;}}printf("\n");}}


0 0
原创粉丝点击