欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

UVa 1584 Circular Sequence解题报告(string对象)

程序员文章站 2022-03-06 11:49:08
...

题目概述

题目:https://vjudge.net/problem/UVA-1584#author=0
(pdf不好复制我就不复制题目了)
大体意思就是:给一个字符串,要你重新寻找一个起点,令这个字符串从该点读起时的字典序是所有情况中最小的。

思路分析

当然是暴力枚举比较啦!这道题主要考的其实是怎么去变换字符串去枚举出各种情况并进行比较。这里我的想法就有点像我们找数组中的最大最小数一样(形象比喻:打擂台),那么,怎么简单的进行比较呢?string对象重载了比较运算符,是最方便的。那么,要怎么变换呢?这里需要用到的是string对象的+运算符和erase()方法,不懂得同学可以了解下,剩下的,交给代码。

完整代码

#include <iostream>
using namespace std;
void transform(string&a)
{
	string p1=a.substr(0,1);
	a=a.erase(0,1)+p1;
}
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		string input;
		cin>>input;
		string min=input;
		string t=input;
		transform(t);
		while(t!=input)
		{
			if(min>t) min=t;
			//cout<<t<<endl;
			transform(t);
		}
		cout<<min<<endl;
	}
	
	return 0;
}
相关标签: 算法 stl