zoukankan      html  css  js  c++  java
  • UVA 146 ID Codes

    题意:给定一个字符串,求它的下一个排列

    解题思路:从后面开始找,找第一个能和后面字符交换的数(字典序比前面的大)。然后交换,再对后面的位排一次序就行了(其实直接可以用c++的next函数)

    解题代码:

    // File Name: uva146.c
    // Author: darkdream
    // Created Time: 2013年07月11日 星期四 10时48分42秒
    
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<time.h>
    #include<math.h>
    #include<ctype.h>
    int cmp(const void *a , const void *b)
    {
        return *(char *)a -*(char *)b;
    }
    char str[100];
    
    int main(){
    
        //freopen("/home/plac/problem/input.txt","r",stdin);
        //freopen("/home/plac/problem/output.txt","w",stdout);
        while(scanf("%s",str) != EOF)
        {
            if(strlen(str) == 1 && str[0] == '#')
                break;
            int ok =0 ;
            int len = strlen(str);
            int siti = 0 ;
            int sitj = 0 ; 
            for(int j = len -1; j >= 0 ;j --)
            {
                for(int i = j; i >= 0 ;i -- )
                {
                    if(str[i] < str[j])
                    {
                        sitj = j ;
                        siti = i ;
                        ok = 1;
                        break;
                    }
                }
                if(ok)
                    break;
            }
            if(ok == 0 )
            {
                printf("No Successor
    ");
                continue;
            }
            char temp = str[sitj];
            str[sitj] = str[siti];
            str[siti] = temp;
            qsort(str+siti+1,len-1-siti,sizeof(char),cmp);
            printf("%s
    ",str);
    
        }
    
        return 0 ;
    }
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    JAVA回调
    Json 转换
    memcache 知识点
    Redis基本命令
    LSM树由来、设计思想以及应用到HBase的索引(转)
    ES 集群调整、升级 最佳实践
    Eureka 客户端和服务端间的交互
    logstash 输出到elasticsearch 自动建立index
    Spring 上传文件
    log4j2
  • 原文地址:https://www.cnblogs.com/zyue/p/3183787.html
Copyright © 2011-2022 走看看