UVA 455
2016-02-03 10:25
323 查看
/* Page57 3-4 */ #include<iostream> #include<string> using namespace std; int main() { int time = 1, times = 0; //周期, 以及测试用的时间 string A; cin >> A; for (int i = 1; i != A.size(); i++) { if (A[0] != A[i]) time++; else break; } //以下 确定这是一个循环 int Lable = 0; int rounds = A.size() / time;//几轮的比较 times = time; for (int i = 0; i < time; i++)//比较次数 { for (int j = 0; j != rounds-1; j++){ //如果不是rounds-1而是rounds ,出现string溢出!! if (A[i] == A[i + times] ) { Lable++; } times += time; } times = time; } if (Lable==(A.size()-time) ) cout << time << endl; else cout << "没最小周期" << endl; system("pause"); return 0; }
该版本只能解决周期内没有重复字母的形式,比如abc abc。遇到aabbaabb出现问题,百度后尝试使用枚举法:在长度范围之内,一个个枚举周期(周期必须能被总长度整除!)
网上搜到的新办法依然无法解决aabbaabb这样的问题,但是非常精炼。
/* Page57 3-4 枚举法*/ #include<iostream> #include<string> using namespace std; int main() { int time = 0; string A; cin >> A; bool flag = false; for (time = 1; time < A.size(); time++){//枚举周期 if (A.size() % time == 0) //长度肯定是周期的整数倍 flag = true; for (int j = time; j < A.size(); j++) { if (A[j] != A[j%time]) flag = false; break; } if (flag){ cout << "周期" << time << endl; break; } } system("pause"); return 0;}
相关文章推荐
- hdoj3183A Magic Lamp【RMQ】
- jgrid合并单元格
- redis配置文件详解(三)
- Highlights of 22nd annual Screen Actors Guild Awards
- spark on yarn中yarn-cluster与yarn-client区别
- 详解Java设计模式编程中的里氏替换原则
- redis配置文件详解(二)
- 基于单边jacobi的奇异值分解(SVD)
- POJ-OPENJUDGE-密码翻译
- linux 查看automake 及 autoconf版本及升级命令
- 支持向量机(Support Vector Machine)-----SVM之SMO算法(转)
- C++ development cross platforms
- Android View事件机制 21问21答
- curry in scala
- 在IntelliJ IDEA上搭建Spring+SpringMVC+Mybatis+Shiro环境搭建(一)
- JavaScript获取当前运行脚本文件所在目录的方法
- spring MVC与ajax通信
- centos 6.5_32 下安装zabbix 2.2 开启中文语言 zabbix没中文语言选项解决方法
- java 网络编程复习(转)
- 公用提示对话框