zoukankan      html  css  js  c++  java
  • UVa 1584

    题意

    环形DNA
    找到一个序列使得该链状DNA字典序最小

    思路

    水题
    枚举开始节点
    每次更新最小字典序的枚举点即可

    AC代码

    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    const int maxn = 100 + 50;
    char s[maxn];
    
    struct dic{
        int m[maxn];
        int st;
    };
    struct dic p[maxn];
    
    int main()
    {
        int T, len, i, j, k;
        int mrk;
        scanf("%d",&T);
        while(T--){
            scanf("%s",s);
            len = strlen(s);
            mrk = 0;
            for( i = 0; i < len; i++ )
                p[0].m[i] = s[i];
            for( i = 1; i < len; i++ ){
                k = 0;
                for( j = i; j < len; j++ ){
                    p[i].m[k] = s[j];
                    k++;
                }
                for( j = 0; j < i; j++ ){
                    p[i].m[k] = s[j];
                    k++;
                }
                for( k = 0; k < len; k++ ){
                    if( p[i].m[k] == p[mrk].m[k] )
                        continue;
                    else if( p[i].m[k] < p[mrk].m[k] ){
                        mrk = i;
                        break;
                    }
                    else    break;
                }
            }
            for( int i = 0; i < len; i++ )
                printf("%c",(char)p[mrk].m[i]);
            puts("");
        }
        return 0;
    }
  • 相关阅读:
    浅谈线段树
    浅谈KMP
    20200729线上模拟题解
    20200727线上模拟题解
    声明
    tarjan--割点,缩点
    20201029模拟
    高精模板
    二分图--二分图的几种模型
    树的直径与树的重心
  • 原文地址:https://www.cnblogs.com/JinxiSui/p/9740629.html
Copyright © 2011-2022 走看看