zoukankan      html  css  js  c++  java
  • 【C/C++】例题3-6 环状序列/算法竞赛入门经典/数组和字符串

    【字典序比较】
    对于两个字符串,比较字典序,从第一个开始,如果有两位不一样的出现,那么哪个的ASCII码小,就是字典序较小。如果都一样,那么短的小。
    【题目】
    输入一个环状串,输出最小的字典序序列。
    【代码】

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    const int maxn = 105;
    char input[maxn];
    
    //环状串s的表示法p是否比表示法q的字典序小
    int less(const char* s, int p, int q)
    //比较p的字典序如果比q的字典序小,就输出1;否则输出0
    //注意字典序要比较所有字母
    {
       int n = strlen(s);
       for (int i = 0; i < n; i++)
       {
          if (s[(p+i)%n]!=s[(q+i)%n])
          {
             return (s[(p+i)%n]<s[(q+i)%n]);
          }
       }
       return 0;
    }
    
    int main()
    {
       int T;
       scanf("%d",&T);
       for(int i = 0; i < T; i++) //T组数据
       { 
          scanf("%s",input); 
          int ans = 0;
          int n = strlen(input);
          for (int j = 0; j < n; j++) //每一个顺序打头比较,找出最小的那个打头位置
          {
             if(less(input,j,ans)) ans = j;
          }
          for (int j = 0; j < n; j++){
             printf("%c",input[(ans+j)%n]);
             //putchar(input[j+ans]%n);
          }
          putchar('
    ');
       }   
       system("pause");
       return 0;
    }
    
  • 相关阅读:
    hph 缓存机制
    递归调用 和 迭代
    多维数组排序
    php curl操作
    JavaScript基本数据类型
    JavaScript基础
    CSS基础布局
    CSS基础样式
    CSS选择器
    CSS3基础
  • 原文地址:https://www.cnblogs.com/kinologic/p/13926254.html
Copyright © 2011-2022 走看看