环状序列(UVa1584)

Posted pgzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了环状序列(UVa1584)相关的知识,希望对你有一定的参考价值。

  题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4459

C++11代码如下:

 1 #include<iostream>
 2 #include<string.h>
 3 #define maxn 103
 4 using namespace std;
 5 char s[maxn];
 6 //C++中注意避免使用less作为自定义函数,因为会和标准库中的less函数重名,或者使用不同的空间域来界定
 7 bool less_seq(const char* s, int p, int q) {  //用来比较以p和q作为起始位置表示的哪种字典序小
 8     int n = strlen(s);
 9     for (int i = 0; i < n; i++) 
10         if (s[(p + i) % n] != s[(q + i) % n])  //使用 %n 来实现序列的循环
11             return s[(p + i) % n] < s[(q + i) % n];
12     return false;
13 }
14 
15 int main() {
16     int n, T;
17     cin >> T;
18     while (T--) {
19         int min = 0;   //定义字典序最小的起始位置为min
20         cin >> s;
21         n = strlen(s);
22         for (int i = 0; i < n; i++) 
23             if (less_seq(s, i, min)) min = i;  //更新min
24         for (int i = 0; i < n; i++)
25             cout << s[(min + i) % n];  //循环打印
26         cout << endl;        
27     }
28     return 0;
29 }

以上是关于环状序列(UVa1584)的主要内容,如果未能解决你的问题,请参考以下文章

UVA 1584 环状序列

UVA1584环状序列 Circular Sequence

环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)

紫书例题3-6 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)

UVa 1584 Circular Sequence --- 水题

Circular Sequence UVa1584