hdu(2203)

15103901_UO7u.gif 15103901_8XL0.gif View Code
 
//超时了,艾~
   

   

   

    
1 #include " iostream "
2 using namespace std;
3 char a[ 100005 ],b[ 100005 ];
4 int i,j,k;
5 int L1,L2;
6 int sign = 0 ;
7 int mark = 0 ;
8 int start = 0 ,end = 0 ;
9 void Xun_huan() // 实现一次循环
10 {
11 char ch = a[ 0 ];
12 for ( int q = 0 ;q <= L1 - 1 ;q ++ )
13 {
14 a[q] = a[q + 1 ];
15 }
16 a[L1 - 1 ] = ch;
17 sign ++ ; // 标记循环次数
18 }
19 void sub( int x, int y)
20 {
21 if (b[x] == a[y])
22 {
23 sign ++ ;
24 if (sign == L2 && b[x] == b[L2 - 1 ]) mark = 1 ; // 标志着搜索成功
25 else sub(x + 1 , y + 1 );
26 }
27 else
28 {
29 sign = 0 ;
30 k = 0 ;
31 }
32 }
33
34 void X_Sub() // 实现对循环序列的搜索
35 {
36 for (i = 0 ; i < L1; i ++ )
37 {
38 k = 0 ;
39 if (b[k] == a[i])
40 {
41 if (b[k] == b[L2 - 1 ]) mark = 1 ; // 标记首位是否满足条件
42 if (mark == 1 ) break ;
43 else sub(k + 1 ,i + 1 );
44 }
45 }
46 }
47 int main()
48 {
49 while (scanf( " %s %s " ,a,b) != EOF)
50 {
51 mark = 0 ;
52 L1 = strlen(a); L2 = strlen(b);
53 start = 0 ;
54 end = 0 ;
55 if (L2 > L1) cout << " no " << endl;
56 else
57 {
58 int flag = 0 ;
59 for (i = 0 ;i < L2;i ++ )
60 {
61 for (j = 0 ;j < L1;j ++ )
62 {
63 if (b[i] == a[j]) { flag ++ ; break ;}
64 }
65 }
66 if (flag != L2) cout << " no " << endl;
67 else
68 {
69 int sign = 0 ;
70
71 for ( int p = 0 ;p < L1;p ++ ) // i标记循环次数
72 {
73 Xun_huan();
74 sign = 0 ;
75 X_Sub();
76 if (mark == 1 && sign == L2) break ;
77 }
78 if (mark == 1 ) cout << " yes " << endl;
79 else cout << " no " << endl;
80 }
81 }
82 }
83 return 0 ;
84 }

   
//两个函数搞定,赞了!
#include < stdio.h >
#include
< string .h >

int main()
{
char str[ 100000 ];
char str1[ 100000 ];
char str2[ 200000 ];

while ( gets(str) ) {
gets(str1);

strcpy(str2, str);
// 刚开始要cpy,不能直接cat
strcat(str2, str);


if ( strstr(str2, str1) != NULL ) {
puts(
" yes " );
}
else {
puts(
" no " );
}
}
return 0 ;

}

转载于:https://my.oschina.net/garyun/blog/602969

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值