阿白| 2021-12-06 22:17 采纳率: 91.7%
浏览 82
已结题

输出超限:zzulioj:1163亲和串

题目是这样的:
1163: 亲和串(字符串)
时间限制: 1 Sec 内存限制: 128 MB
提交: 6635 解决: 2951
[状态] [讨论版] [提交] [命题人:admin]
题目描述
判断亲和串。亲和串的定义是这样的:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中,那么我们就说s2 是s1的亲和串。

输入
本题有多组测试数据,每组数据的第一行包含输入字符串s1,第二行包含输入字符串s2,s1与s2的长度均小于100000。

输出
如果s2是s1的亲和串,则输出"yes",反之,输出"no"。每组测试的输出占一行。

样例输入 Copy
AABCD
CDAA
ASD
ASDF
ab
aba
样例输出 Copy
yes
no
no
来源/分类

我的代码(样例输出没问题,提示输出超限,代码我加注了,希望指点,看看我的逻辑哪里错了(还是连思路都错了))
如果有更好的思路,求!!!

#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#include<ctype.h>
#include<string.h>
#include<limits.h>//这些头文件是之前懒省事全加上了
void exchange(char *p,int lo);
int main()
{
    char a[100001],b[100001];
    int i;
    while(1)
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));//清空数组
        gets(a);
        gets(b);
        int loa=strlen(a);
        int lob=strlen(b);//求两数组长度
        char lowtime[lob];/*设置一个数组来从前往后截取a数组长度lob的部分
                            (想用strcmp比较两数组是否相等)*/
        int f;
        for(f=0;f<loa;f++)
        {
            strncpy(lowtime,a,lob);//截取数组
            if(strcmp(b,lowtime)==0)//如果数组a前lob个位置与数组b相等
            {
                printf("yes");
                break;
            }
            exchange(a,loa);//如果不相等的话,定义一个函数移位
        }
        if(f==loa) printf("no");//如果经历了完整的循环仍然不能相等,输出no
        printf("\n");
    }
    return 0;
}
void exchange(char *p,int lo)
{
    int t=*(p+lo-1);//把数组最后一个位置的值赋给t
    for(int i=lo-2;i>=0;i--)//数组往后移一位
        *(p+i+1)=*(p+i);
    p[0]=t;//再把原末尾值赋给首位置
}


  • 写回答

1条回答 默认 最新

  • -Undefined_ 2021-12-06 22:54
    关注

    程序死循环啦 EOF

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月14日
  • 已采纳回答 12月6日
  • 创建了问题 12月6日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效