gym 101196E Red Rover(枚举)

来源:互联网 发布:php soap添加header 编辑:程序博客网 时间:2024/04/19 11:49
我们的一个较老的火星车已经完成了他的任务,正在等待指示
最后一次探索火星表面的任务。调查组已经选择了一条路线
委托你将最终的指令传送给流动站。这条路线
只是一个主要方向的一系列动作:北,南,东,西。这些
可以使用相应字符串N,S,E和W发送指令。但是,
接收到信号会消耗流动站的电源,这已经很危险了。幸好,
流动站的创建者内置了您可以选择定义可以使用的单个“宏”的功能
如果路线有很多重复。更具体地说,要发送一个带有宏的消息,两个字符串是
发送。第一个是字符{N,S,E,W,M},第二个超过{N,S,E,W}。首先
字符串表示对宏(M)的移动和调用序列,而第二个字符串确定
宏扩展到什么。例如:
WNMWMME
EEN
是一个编码
WENEENWEENEENE
请注意,具有宏的版本只需要10个字符,而原始版本则需要13个字符。
给定路由,确定将其发送到流动站所需的最少字符数。
输入
输入由包含由字母N,S,E和W组成的字符串的单行组成
传输到流动站的路由。字符串的最大长度为100。
输入
显示编码路由所需的最少字符数。
样品输入1样品输出1
WNEENWEENEENE 10
样品输入2样品输出2
NSEW 4
ECNA 2016问题E:Red Rover 9
样品输入3样品输出3

EEEEEEEEE 6

int main(){    string S,s,u;    cin>>S;    int n = S.length();    int ans = n;    for(int i=0;i<n;i++)        for(int j=i+1;j<n;j++)        {            s=S.substr(i,j-i+1);            int cnt = 0;            for(int k=0;k<n;k++)            {                u=S.substr(k,j-i+1);                if(u==s)                {                    k+=(j-i);                    cnt++;                }            }            ans = min(ans,cnt+j-i+1+n-cnt*(j-i+1));        }    //ans = min(ans,n);    cout<<ans<<endl;    return 0;}


0 0
原创粉丝点击