| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 454 人关注过本帖
标题:高分求教: 字符串找直接后继
取消只看楼主 加入收藏
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
结帖率:92.59%
收藏
已结贴  问题点数:50 回复次数:2 
高分求教: 字符串找直接后继
存在三十六个字符{0, 1, 2, . . . , 9, a, b, c, . . . , z}.字符串由这三十六个字符组成,模仿数学中的进制,找到这个字符串的直接后继,
例如a的后继是b,aaa的后继是aab。。。。。

我的算法是,从后往前,遍历字符串,如果是逆序的,就没有后继
否则,找到第一个非逆序的字符,和之前遍历的字符中比它大,而且最接近的那个和他交换,再将其余遍历字符由小到大排序

例如,kaka7ba642,后往前第一个非逆序的是7,7与6交换,7ba42再由小到大排序为247ab,所以直接后继是kaka247ab。

Sample Input
12
03snd3fk5ee2
gfedcba987
036420
 
Sample Output
12 -> 21
03snd3fk5ee2 -> 03snd3fke25e
gfedcba987 -> no successor/*没有后继的时候*/
036420 -> 040236

我写了个半成品的代码:
#include"stdio.h"
#include"string.h"
#include"math.h"
int main()

{char a[100];
int n,i,j,t,tt,m=0,min=10000,temp;

while(scanf("%s",a)!=EOF)
{
    n=strlen(a);
   if(n==1) { printf("%c -> no successor\n",a[0]);}
   else{
       printf("%s ->",a);
       for(i=n-1;i>0;i--)
         {if(a[i-1]<a[i])
             { t=i-1;m=1;break;}/*m=1,表示找到第一个非逆序的元素*/
          }
        if(m==0) printf("no successor\n");

        if(m==1) { for(j=i;j<n;j++)
                  if((a[j]>a[i-1])&&(('a[j]'-'a[i-1]')<min))
                   {
                    'a[j]'-'a[i-1]'=min; tt=j;     /*报错,找后面比改字符大又最接近的怎么找呢,这里我不会写,这里就当作伪代码看吧*/  
                   }
                  }
                    temp=a[t];a[t]=a[tt];a[tt]=temp;
                    for(j=t+1;j<n;j++)
                    {for(i=t+1;i<n;i++)
                     {if(a[j]>a[i])
                      {temp=a[i];a[i]=a[j];a[j]=temp;}/*顺请教冒泡排序是这么写的么?有人告诉我qsort(),这个函数怎么用么?*/
                     }
                    }  
                  
                printf("%s\n",a);
         }
   }
   
return 0;   
}
搜索更多相关主题的帖子: 高分 字符 后继 
2009-08-04 20:44
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
收藏
得分:0 
顶上去,高手来挑战下吧、
2009-08-05 11:44
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
收藏
得分:0 
回复 4楼 ft1223ccc
谢谢了,真希望有人指教下!~~
2009-08-05 14:06
快速回复:高分求教: 字符串找直接后继
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017124 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved