zoukankan      html  css  js  c++  java
  • Codeforces 798B

    感觉自己好咸鱼呀……B题写了这么久,虽然可以算作1A(忽略一次少include一个头文件的CE)……

    思想很简单,每次选定一个字符串作为目标字符串,然后把其他所有字符串都当做测试字符串,计算出总共需要的步数,再在这些计算出的步数中找到最小的那个就是答案。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 using namespace std;
     5 char str[53][105];
     6 int n;
     7 bool is_equal(char sta[],char tes[],int len)//判断两个字符串是否相等 
     8 {
     9     for(int i=0;i<len;i++)
    10     {
    11         if(sta[i]!=tes[i]) return false;
    12     }
    13     return true;
    14 }
    15 int step(int sta,int tes)//计算从tes测试字符串到sta目标字符串需要多少步 
    16 {
    17     int cnt=0;
    18     int len=strlen(str[sta]);
    19     char test[2*len+1];//新建一个test字符串 
    20     for(int i=0;i<len;i++) test[i]=str[tes][i];
    21     for(int i=0;i<len;i++) test[len+i]=str[tes][i];
    22     test[2*len]='';
    23     //以上三行是做如此的工作:源字符串:“abc”,test字符串:“abcabc”,这样可以方便后续计算步数 
    24     while(cnt<len)//计算出从tes测试字符串到sta目标字符串需要cnt步
    25     {
    26         if(is_equal(str[sta],test+cnt,len)) break;
    27         else cnt++;
    28     }
    29     if(cnt>=len) return -1;//如果跑完一圈依然没有能够找到某次和目标字符串相同,那么就代表ans=-1; 
    30     return cnt;
    31 }
    32 int main()
    33 {
    34     scanf("%d",&n);
    35     for(int i=1;i<=n;i++) scanf("%s",str[i]);
    36     int ans=1000000000,flag=1;
    37     for(int i=1;i<=n;i++)//枚举目标字符串 
    38     {
    39         int cnt=0;
    40         for(int j=1;j<=n;j++)//枚举测试字符串 
    41         {
    42             if(i!=j)
    43             {
    44                 int tmp=step(i,j);
    45                 if(tmp==-1){
    46                     printf("-1
    ");
    47                     return 0;
    48                 }
    49                 else cnt+=tmp;
    50             }
    51         }
    52         if(cnt<ans) ans=cnt; 
    53     } 
    54     printf("%d
    ",ans);
    55 }



  • 相关阅读:
    第十一篇:Mysql系列
    mysql八:ORM框架SQLAlchemy
    mysql七:视图、触发器、事务、存储过程、函数
    mysql六:数据备份、pymysql模块
    工厂方法模式
    execution表达式
    CentOS系统下安装SVN及常用命令
    Spring Boot 表单验证、AOP统一处理请求日志、单元测试
    SSH文件上传代码片段
    JPA 实体映射
  • 原文地址:https://www.cnblogs.com/dilthey/p/6804139.html
Copyright © 2011-2022 走看看