博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shuffle'm Up(串)
阅读量:4598 次
发布时间:2019-06-09

本文共 1561 字,大约阅读时间需要 5 分钟。

题意:每组3个串,前两个串长度为n,第三个串长度为2*n,依次从第二个串(s2)中取一个字符,从第一个串(s1)中取一个字符,......,直至取完,如果组成的新串(s)和第三个字符串相同则输出组数和匹配成功的次数,如果不相同,则将s串的前n个字符作为s1,后n个字符作为s2,接着匹配,如果永远匹配不成s,则输出组数和-1。

思路:简单的字符串模拟,关键是判断输出-1的情况,如果一直匹配与 s不同,但与原来的strcat(s1,s2)相同,则证明无法匹配成功,因为此时字符串已经匹配了一个周期。

1 #include 
2 #include
3 int main() 4 { 5 char s1[520],s2[520],s[1010],str[520],ss[520]; 6 int t,n,o = 0; 7 scanf("%d",&t); 8 while(t--) 9 {10 o++;11 int k ,cnt = 0;12 scanf("%d",&n);13 scanf("%s%s",s1,s2);14 strcpy(ss,s1);15 strcat(ss,s2);16 scanf("%s",str);17 while(1)18 {19 cnt++;20 k = 0;21 for (int i = 0; i < n; i ++)22 {23 s[k++] = s2[i];24 s[k++] = s1[i];25 }26 s[k] ='\0';27 if (!strcmp(s,str))28 {29 printf("%d %d\n",o,cnt);30 break;31 }32 else33 {34 int i,j = 0;35 for (i = 0; i < n; i ++)36 s1[i] = s[i];37 for ( ; i < 2*n; i ++)38 s2[j++] = s[i];39 s1[i] = '\0';40 s2[j] = '\0';41 if (!strcmp(s,ss))42 {43 printf("%d -1\n",o);44 break;45 }46 }47 }48 49 }50 return 0;51 }
View Code

 

 

转载于:https://www.cnblogs.com/lahblogs/p/3285883.html

你可能感兴趣的文章
13、对象与类
查看>>
Sublime Text3 个人使用心得
查看>>
jquery 编程的最佳实践
查看>>
MeetMe
查看>>
IP报文格式及各字段意义
查看>>
(转载)rabbitmq与springboot的安装与集成
查看>>
C2. Power Transmission (Hard Edition)(线段相交)
查看>>
STM32F0使用LL库实现SHT70通讯
查看>>
Atitit. Xss 漏洞的原理and应用xss木马
查看>>
MySQL源码 数据结构array
查看>>
(文件过多时)删除目录下全部文件
查看>>
T-SQL函数总结
查看>>
python 序列:列表
查看>>
web移动端
查看>>
pythonchallenge闯关 第13题
查看>>
linux上很方便的上传下载文件工具rz和sz使用介绍
查看>>
React之特点及常见用法
查看>>
【WEB前端经验之谈】时间一年半,或沉淀、或从零开始。
查看>>
优云软件助阵GOPS·2017全球运维大会北京站
查看>>
linux 装mysql的方法和步骤
查看>>