zoukankan      html  css  js  c++  java
  • UVA 455

    在这里插入图片描述

    题目大意:

    输入一个n表示有n组数据,对于每组数据输入一个字符串,输出这个字符串的最小周期,比如qazqazqaz qaz是循环的,因此他的最小周期是3。

    解题思路:

    长度最多80,直接暴力枚举即可,枚举 1-(s.length()/2),如果1-(s.length()/2)都不行,则直接输出字符串长。对于每一次枚举,先截取从0-i 长度的字符串,然后从0去一个一个比较,相等则继续往下走,如果走到了length(),则说明这个枚举是可以的,退出循环输出长度。这个题会卡输出格式,注意换行。AC代码:(有大佬是用环形串的思想去解的,非常巧妙可以去参考一下)

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <sstream>
    #include <map>
    using namespace std;
    int main()
    {
    	int n;
    	cin>>n;
    	while(n--)
    	{
    		string s;
    		int ans;
    		cin>>s;
    		bool flag=false;
    		for(int i=1;i<=s.length()/2;i++)
    		{
    			string t=s.substr(0,i);
    			int j;
    			for(j=0;j<s.length();j++)
    			{
    				if(t!=s.substr(j,i))
    				  break;
    				j+=i;
    				j--;
    			}
    			if(j==s.length())
    			{
    				flag=true;
    				ans=i;
    			}
    			if(flag)//flag用来判断前面枚举的长度是否可行
    			  break;
    		}
    		cout<<(flag?ans:s.length())<<endl;
    		if(n)//
    		  cout<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    Object的公用方法
    Java的特点
    Set集合
    Java语言的三大特性
    List集合
    Collection类
    HashSet
    Codeforces1141F2 Same Sum Blocks (Hard)
    Codeforce1176F Destroy it!
    jzoj 5348. 【NOIP2017提高A组模拟9.5】心灵治愈
  • 原文地址:https://www.cnblogs.com/Hayasaka/p/14294234.html
Copyright © 2011-2022 走看看