CF-798B

B. Mike and strings
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Mike has n strings s1, s2, ..., sn each consisting of lowercase English letters. In one move he can choose a string si, erase the first character and append it to the end of the string. For example, if he has the string "coolmike", in one move he can transform it into the string "oolmikec".

Now Mike asks himself: what is minimal number of moves that he needs to do in order to make all the strings equal?

Input

The first line contains integer n (1 ≤ n ≤ 50) — the number of strings.

This is followed by n lines which contain a string each. The i-th line corresponding to string si. Lengths of strings are equal. Lengths of each string is positive and don't exceed 50.

Output

Print the minimal number of moves Mike needs in order to make all the strings equal or print  - 1 if there is no solution.

Examples
input
4
xzzwo
zwoxz
zzwox
xzzwo
output
5
input
2
molzv
lzvmo
output
2
input
3
kc
kc
kc
output
0
input
3
aa
aa
ab
output
-1
Note

In the first sample testcase the optimal scenario is to perform operations in such a way as to transform all strings into "zwoxz".

 

 

题意:

将所有字符串变成相等,只允许将最左边的字符移到最右,问最少要移多少步。

若不能使所有相等,则输出-1、

 

分别以每一个字符串为模板,将其他的字符串移成和当前字符串相等的情况,再找出步数最少的方案。

 

附AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int inf=1<<30;
 5 
 6 string s[60];
 7 
 8 int main(){
 9     int n,i,j,k,m;
10     cin>>n;
11     for(i=0;i<n;i++){
12         cin>>s[i];
13     }
14     int len=s[0].size();
15     int ans=inf;
16     for(i=0;i<n;i++){
17         int cnt=0;
18         for(j=0;j<n;j++){
19             for(m=0;m<len;m++){
20                 for(k=0;k<len;k++){
21                     if(s[i][k]!=s[j][(k+m)%len])
22                     break;
23                 }
24                 if(k==len)//只有len个都相等才表明移动m个字符后两字符串相等 
25                 break;
26             }
27             if(m==len){//若m==len则表明不能匹配。 
28                 cnt=inf;
29                 break;
30             }
31             cnt+=m;
32         }
33         ans=min(ans,cnt);
34     }
35     if(ans==inf)
36     cout<<-1<<endl;
37     else
38     cout<<ans<<endl;
39     return 0;
40 } 

 

转载于:https://www.cnblogs.com/Kiven5197/p/6770323.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序倒计时实现

思路&#xff1a;跟一般js倒计时一样&#xff0c;主要在于this的变相传递。 实现效果&#xff1a; wxml文件部分代码&#xff1a; common.js文件 : 引用页JS文件: PS: 1.在data里初始化时间格式&#xff0c;是避免时间加载的第1秒显示为空白&#xff0c;因为setTimeOut是在1s以…

基于Kubeadm的Flannel分析

Flannel概述 Flannel是将多个不同子网&#xff08;基于主机Node&#xff09;通过被Flannel维护的Overlay网络拼接成为一张大网来实现互联的&#xff0c;通过官方的一张网络拓扑图我们可以对其基本原理一目了然&#xff1a; 值得探讨的是&#xff0c;flannel的这个overlay网络支…

sensor的skipping and binning 模式

1、第一种理解 关于sensor的缩放存在两种模式 binning mode 和skip mode skipping mode 就是把想要的数据采集上来 把其余的数据扔掉 如下所示 column skip 2 row skip 2 留下的就是白色的像素 黑色的像素丢掉。 binning mode 就是把相邻的像素合成一个像素&#xff0c;然后再…

5 结构型模式之 - 适配器模式

5 结构型模式之 - 适配器模式 适配器模式的介绍&#xff1a;适配器模式在开发中使用率很高&#xff0c;适配器是将两个不兼容的类融合在一起&#xff0c;它有点像粘合剂&#xff0c;将不同的东西通过一种转换使得它们能够协作起来。例如经常碰到两个不相关的类之间进行交互&…

Android进程保活

凡是做过几年Android开发的&#xff0c;都不能不面对进程保活这一问题。特别是这两年&#xff0c;面对谷歌&#xff0c;国内定制ROM&#xff0c;安全软件等多方围剿的情况下&#xff0c;app在后台保活的难度越来越大&#xff0c;可以说包括QQ、微信在内的所有app&#xff0c;都…

治安卡口摄像机与电警抓拍机之间有什么区别?

接下来小编和大家说说它们有哪些相同和不同的地方&#xff0c;供大家参考。 治安卡口&#xff1a; 卡口摄像机主要是用于城市道路或高速公路出入口、收费站等重点治安监控地段的全天候实时检测与记录收费站、交通或治安检查站等地点。 治安卡口监控系统的前端部分主要由三个单元…

https证书互信解决方案—创建私有CA并申请证书

前言 https相较于http而言有很大的安全性&#xff0c;当我们一个服务开启https并与之通信时&#xff0c;往往需要证书的认证&#xff0c;如果是浏览器访问服务&#xff0c;只要在浏览器内设置信任证书即可&#xff0c;而如果是程序内访问服务&#xff08;如java程序&#xff09…

[转]Unity-移动设备可用的压缩解压缩源码

原文&#xff1a;http://www.manew.com/thread-103250-1-1.html 最近在做客户端数据的分离&#xff0c;不希望对项目有什么影响&#xff0c;也不太想用AssetBundle&#xff0c;太麻烦&#xff0c;就在网上找了找开源的C#压缩算法&#xff0c;找来找去&#xff0c;发现不是不支持…

高亮显示QSS文件

转【作者&#xff1a;一去丶二三里 博客地址&#xff1a;http://blog.csdn.net/liang19890820】 简述 语法高亮是文本编辑器用来显示文本的&#xff0c;特别是源代码&#xff0c;根据不同的类别来用不同的颜色和字体显示。这个功能有助于编写结构化的语言&#xff0c;例如&…

智能识别技术对电子警察设备的影响

电子警察是目前交通管理部门用的最多的一种监控管理系统。这类系统与传统安防的监控设备有很大区别&#xff0c;原先的系统只能抓拍车辆图片&#xff0c;准确率又低所以被交通管理部门慢慢的淘汰了&#xff0c;同业兴创这款最新的设备系统&#xff0c;有它一个很优质的特点就是…

Mybatis缓存配置

pom文件配置: <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.1</version> </dependency> <dependency><groupId>org.mybatis</groupId><artifactId>myba…

初入Linux,M35作业第一弹,500字感想

毕业以后&#xff0c;做过很多工作&#xff0c;一直比较迷茫。来这边上课&#xff0c;其实是我的好同学推荐我来报班的&#xff0c;因为他本身是做运维的&#xff0c;运维前景还可以&#xff0c;而且我对这个也感兴趣。有一种冷&#xff0c;叫你妈觉得你冷&#xff0c;明明单衣…

【转】一篇比较清晰简单的C++文件操作

from:http://www.vckbase.com/document/viewdoc/?id1439 用C进行简单的文件I/O操作 原文出处&#xff1a;Simple File I/O Using C 序论 我曾发表过文件输入输出的文章&#xff0c;现在觉得有必要再写一点。文件 I/O 在C中比烤蛋糕简单多了。 在这篇文章里&#xff0c;我 会详…

交通治安卡口监控系统解决方案

随着社会经济发展、城镇建设速度的加快&#xff0c;流动人口不断增加&#xff0c;城市中人口密度逐渐加大&#xff0c;给城市治安监管带来很大的压力。因此采用高清网络摄像监控系统以科技手段提高执法监督效率&#xff0c;成为有力推进“和谐社会”构建的最有力办法。 同业兴创…

细说shiro之三:在独立应用中使用shiro

官网&#xff1a;https://shiro.apache.org/ 1. 下载在非Web环境的独立应用中使用Shiro时&#xff0c;只需要shiro-core组件。在Maven项目中的依赖配置如下&#xff1a; <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</a…

高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解

Redis的高并发和快速原因 1.redis是基于内存的&#xff0c;内存的读写速度非常快&#xff1b;2.redis是单线程的&#xff0c;省去了很多上下文切换线程的时间&#xff1b;3.redis使用多路复用技术&#xff0c;可以处理并发的连接。非阻塞IO 内部实现采用epoll&#xff0c;采用了…

2、C#基础 - Visual Studio 的版本选择和下载

有句话说&#xff1a;工欲善其事&#xff0c;必先利其器&#xff0c;我不推荐在学习一个语言时使用记事本练习&#xff0c;甚至说相当的排斥。当然了&#xff0c;你也可以选择你自己喜欢的方式。本系列推荐使用的IDE为vs2017 community版&#xff0c;银子不够的同志不用怕&…

红外摄像机的原理及选择

一、红外基本原理介绍 光是一种电磁波&#xff0c;它的波长区间从几个纳米&#xff08;1nm10-9m&#xff0c;十亿分之一米&#xff09;到 1 毫米&#xff08;mm&#xff09;左右。人眼可见的只是其中一部分&#xff0c;我们称其为可见光&#xff0c;可见光的波长范围为 380nm …

第六章 预处理器

宏就是文字展开&#xff0c;实际中能够展开写出来发现错误。6.1 不能忽视宏定义中的空格 6.2 宏并非函数宏定义一个函数时&#xff0c;1、要把每一个參数用括号括起来2、同一时候也要把整个表达式括起来。3、要确保宏中的參数没有副作用#define max(a,b) ((a)>(b)?(a):(b)…

oracle 数据库中执行数据库语句能找到数据,但是程序中却抓取不到

oracle 数据库中执行数据库语句能找到数据&#xff0c;但是程序中却抓取不到&#xff1f; 原因&#xff1a;数据库中插入数据时没有commit&#xff0c;执行COMMIT后就可以查询到。转载于:https://www.cnblogs.com/hanje/p/10140307.html