zoukankan      html  css  js  c++  java
  • POJ-1509 Glass Beads---最小表示法模板

    题目链接:

    https://vjudge.net/problem/POJ-1509

    题目大意:

    给你一个循环串,然后找到一个位置,使得从这个位置开始的整个串字典序最小。

    解题思路:

    最小表示法模板

    注意模板返回的下标是从0开始,答案要求从1开始

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<string>
     6 #include<set>
     7 using namespace std;
     8 const int maxn = 100000 + 10;
     9 const int INF = 0x3f3f3f3f;
    10 int change_min(char s[])
    11 {
    12     int n = strlen(s);
    13     int i = 0, j = 1, k = 0;
    14     while(i < n && j < n && k < n)
    15     {
    16         int t = s[(i + k) % n] - s[(j + k) % n];
    17         if(!t)
    18             k++;
    19         else
    20         {
    21             if(t > 0)
    22                 i += k + 1;
    23             else
    24                 j += k + 1;
    25             if(i == j)j++;
    26             k = 0;
    27         }
    28     }
    29     return i < j ? i : j;
    30 }
    31 char s[maxn];
    32 int main()
    33 {
    34     int T;
    35     scanf("%d", &T);
    36     while(T--)
    37     {
    38         cin >> s;
    39         cout<<(change_min(s) + 1)<<endl;
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    C语言寒假大作战01
    第十二次作业
    第十一次作业
    第十周作业
    第九次作业
    第8周作业
    第七次作业
    C语言I作业12—学期总结
    第一周作业
    C语言l博客作业02
  • 原文地址:https://www.cnblogs.com/fzl194/p/8934070.html
Copyright © 2011-2022 走看看