UVA1584环状序列 Circular Sequence
Posted rstz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA1584环状序列 Circular Sequence相关的知识,希望对你有一定的参考价值。
如果是环状可以复制一份变直线
求字符串最小表示法,如果存在一种,两个字符串相比前面相同,但是到后面不相同,且必然其中一个字典序打一些,那么大的字符串必然不可1-k前的子窜就不能满足条件。 1 #include <iostream>
2 #include <cstring>
3 using namespace std;
4
5 char s[200];
6 int main() {
7 int t;
8 cin >> t;
9 while(t --) {
10
11 cin >> s + 1;
12
13 int n = strlen(s + 1);
14 for(int i = 1; i <= n; ++ i) s[n + i] = s[i];
15 int i = 1, j = 2, k;
16 while(i <= n && j <= n){
17 for (k = 0; k <= n && s[i+k] == s[j+k]; ++ k);
18 if(k == n) break;
19 if(s[i+k] > s[j+k])
20 {
21 i = i + k + 1;
22 if(i == j) ++ i;
23 }
24 else {
25 j = j + k + 1;
26 if(i == j) ++ j;
27 }
28 }
29 int ans = min(i, j);
30 for(i = ans; i < n+ans; ++ i)
31 cout << s[i];
32 cout << endl;
33 }
34 return 0;
35 } 环状序列 Circular Sequence
以上是关于UVA1584环状序列 Circular Sequence的主要内容,如果未能解决你的问题,请参考以下文章
紫书例题3-6 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)
UVa 1584 Circular Sequence --- 水题