码迷,mamicode.com
首页 > 其他好文 > 详细

UVA1584环状序列 Circular Sequence

时间:2020-07-23 16:27:17      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:out   cst   min   字符   name   字符串   strlen   end   ==   

如果是环状可以复制一份变直线

求字符串最小表示法,如果存在一种,两个字符串相比前面相同,但是到后面不相同,且必然其中一个字典序打一些,那么大的字符串必然不可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

标签:out   cst   min   字符   name   字符串   strlen   end   ==   

原文地址:https://www.cnblogs.com/rstz/p/13365513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!