zoukankan      html  css  js  c++  java
  • USACO 5.5.2 字符串的最小表示法

      这道题是最小表示法的一个应用, 代码如下:

    /*
        ID: m1500293
        LANG: C++
        PROG: hidden
    */
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    
    using namespace std;
    char s[100000 + 100];
    int len;
    
    int mins(char s[], int len)
    {
        int i=0, j=1, k=0;
        while(i<len && j<len && k<len)
        {
            int t = s[(i+k)%len]-s[(j+k)%len];
            if(!t) ++k;
            else
            {
                if(t > 0) i = i+k+1;
                else j = j+k+1;
                if(i == j) ++j;
                k = 0;
            }
        }
        return i<j?i:j;
    }
    int main()
    {
        freopen("hidden.in", "r", stdin);
        freopen("hidden.out", "w", stdout);
        int len;
        scanf("%d", &len);
        int idx = 0;
        while(scanf("%s", s+idx) != EOF)
        {
            idx += strlen(s+idx);
        }
        printf("%d
    ", mins(s, len));
        return 0;
    }
  • 相关阅读:
    EasyARM-Linux工具
    EasyARM-Linux文件系统
    EasyARM-Linux使用
    公差-PCBA
    novoton-USBDevice使用
    novoton-RTC使用
    novoton-ADC使用
    novoton-I2C使用
    novoton-timer使用
    novoton-usart使用
  • 原文地址:https://www.cnblogs.com/xingxing1024/p/5185999.html
Copyright © 2011-2022 走看看