贪心 - Glass Beads UVA - 719
最 简 单 粗 暴 的 方 法 过 了 h h h h ( 滑 稽 ) 最简单粗暴的方法过了hhhh(滑稽) 最简单粗暴的方法过了hhhh(滑稽)
题意:
T 组 数 据 , 每 组 包 括 一 个 字 符 串 s , 可 以 把 这 个 字 符 串 看 作 一 个 环 , 选 择 某 个 字 符 作 为 起 点 , 使 得 这 个 字 符 串 的 字 典 序 最 小 , 输 出 这 个 起 点 。 T组数据,每组包括一个字符串s,可以把这个字符串看作一个环,\\选择某个字符作为起点,使得这个字符串的字典序最小,输出这个起点。 T组数据,每组包括一个字符串s,可以把这个字符串看作一个环,选择某个字符作为起点,使得这个字符串的字典序最小,输出这个起点。
Sample Input:
4
helloworld
amandamanda
dontcallmebfu
aaabaaa
Sample Output:
10
11
6
5
数据范围:
∣
s
∣
<
=
10000
,
T
未
给
出
,
应
该
不
大
。
T
i
m
e
l
i
m
i
t
:
3000
m
s
|s|<=10000,T未给出,应该不大。\\Time\ limit:3000 ms
∣s∣<=10000,T未给出,应该不大。Time limit:3000ms
题解:
字 符 串 长 度 为 n , 将 字 符 串 复 制 一 遍 , 枚 举 n 个 起 点 , 长 度 为 n 的 字 符 串 , 维 护 最 小 的 一 个 字 符 串 和 对 应 的 下 标 。 字符串长度为n,将字符串复制一遍,枚举n个起点,长度为n的字符串,维护最小的一个字符串和对应的下标。 字符串长度为n,将字符串复制一遍,枚举n个起点,长度为n的字符串,维护最小的一个字符串和对应的下标。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
string str,mins;
int T,minpos;
int main()
{
cin>>T;
while(T--)
{
cin>>str;
mins=str;
minpos=1;
int n=str.size();
str+=str;
for(int i=1;i<n;i++)
{
string tmp=str.substr(i,n);
if(tmp<mins)
{
mins=tmp;
minpos=i+1;
}
}
printf("%d\n",minpos);
}
return 0;
}