zoukankan      html  css  js  c++  java
  • 环状序列

    题目来自 刘汝佳 所编著的《算法竞赛入门经典(第二版)》

    题目描述:

    输入案例:

    2

    CCTC

    CGAGTCAGCT

    输出案例:

    CCCT

    AGCTCGAGT

    答案代码:

    #include<iostream>
    #include<cstring>
    using namespace std;
    #define maxn 105
    int Less(const char * s, int p, int q)
    {
        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;
        char s[maxn];
        cin >> T;
        while(T--)
        {
            cin >> s;
            int ans = 0;
            int n = strlen(s);
            for (int i = 1; i < n; i++)
                if (Less(s, i, ans)) ans = i;
            for (int i = 0; i < n; i++)
                putchar(s[(i + ans) % n]);
            putchar('
    ');
        }
        return 0;
    }

    希望有大神能够提供更好的算法思路!博主没能自己想出来方法(;′⌒`)。

  • 相关阅读:
    用户交互语句
    基础数据类型补充与总结
    Python 中表示 False 的方法
    集合
    字典
    元组
    列表
    整型数据详述和进制转换
    f-strings 详解
    字符串方法详解
  • 原文地址:https://www.cnblogs.com/Breathmint/p/7239258.html
Copyright © 2011-2022 走看看