贪心 - Glass Beads UVA - 719

贪心 - Glass Beads UVA - 719

最 简 单 粗 暴 的 方 法 过 了 h h h h ( 滑 稽 ) 最简单粗暴的方法过了hhhh(滑稽) hhhh()

题意:

T 组 数 据 , 每 组 包 括 一 个 字 符 串 s , 可 以 把 这 个 字 符 串 看 作 一 个 环 , 选 择 某 个 字 符 作 为 起 点 , 使 得 这 个 字 符 串 的 字 典 序 最 小 , 输 出 这 个 起 点 。 T组数据,每组包括一个字符串s,可以把这个字符串看作一个环,\\选择某个字符作为起点,使得这个字符串的字典序最小,输出这个起点。 Ts使

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<=10000TTime limit3000ms

题解:

字 符 串 长 度 为 n , 将 字 符 串 复 制 一 遍 , 枚 举 n 个 起 点 , 长 度 为 n 的 字 符 串 , 维 护 最 小 的 一 个 字 符 串 和 对 应 的 下 标 。 字符串长度为n,将字符串复制一遍,枚举n个起点,长度为n的字符串,维护最小的一个字符串和对应的下标。 nnn


代码:

#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值