zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    毕业设计-角色用户管理
    质因数分解
    高次同余方程
    线性同余方程
    乘法逆元
    约数,整除
    扩展欧几里得算法
    同余
    P2303 [SDOI2012] Longge 的问题
    最大公约数(gcd)与最小公倍数(lcm)
  • 原文地址:https://www.cnblogs.com/rstz/p/13365513.html
Copyright © 2011-2022 走看看