链接:https://www.nowcoder.com/acm/contest/116/A
来源:牛客网
输入描述:
Input consists of a single line containing a string made up of the letters N, S, E, and W representing the route to transmit to the rover. The maximum length of the string is 100.
输出描述:
Display the minimum number of characters needed to encode the route.
示例1
输入
WNEENWEENEENE
输出
10
题意:给你一个由NSEW四个字符组成的字符串你可以选择一个子串用M表示,这是字符串的长度就变成了改变后的长度加上M的长度,题目让我们求出最小的长度(注意不能整个变成一个W)
代码:
#include<bits/stdc++.h> using namespace std; #define ll long long int sum=0; struct node{ string str; int len; }; vector<node>ve; map<string,int>mp; int main() { int n; string s; cin>>s; int len=s.length(); int minn=len; for(int i=0;i<len;i++){ for(int j=i+1;j<len;j++){ string now=s.substr(i,j-i); int be=0,cnt=0; int num=0; while(cnt!=-1){ cnt=s.find(now,be); be=cnt+now.length(); if(cnt!=-1)num++; } if(minn>len-(num*now.length())+num+now.length()){ minn=len-(num*now.length())+num+now.length(); } } } cout<<minn<<endl; return 0; }