題目鏈接:http://poj.org/problem?id=1146
此題求所給字符串按字典序的下一個由原串字母排列的串,題目不難,開始看錯了,wrong一次
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char** argv) {char a[55],temp;int k,i,j,flag,t;while(scanf("%s",a)&&a[0]!='#'){flag=-1;k=strlen(a);t=k-1;for(i=k-2;i>=0;--i){if(a[i]>=a[t]){t=i;}else{if(a[k-1]>a[i]){flag=k-1;}else{for(j=t;j<k;j++){if(a[j]<=a[i]){flag=j-1;break;}}}break;}}if(flag==-1){printf("No Successor\n");}else{temp=a[i];a[i]=a[flag];a[flag]=temp;for(j=0;j<=i;j++){printf("%c",a[j]);}for(j=k-1;j>=i+1;--j){printf("%c",a[j]);}printf("\n");}}return (EXIT_SUCCESS); }
pochami1219??
代碼: