uva10340,总是runtime error,和ACM社团的同学讨论后,把数组开到10e7,终于AC了,之前由于对内存限制没有一个正确的认识,从来没敢开这么大,刚好这题也没有明确告诉范围,所以就开了1000.
问题
判断字符串s是不是t的子序列,相应的输出Yes 或 No
思路
对 s 的元素循环,利用strchr查找t中相同的第一个元素,并将所得指针作为下一次查找的起点。若strchr返回NULL,说明No,否则Yes
#include<cstdio>
#include<vector>
#include<cstring>
//#include<cstddef>
using namespace std;
const int maxn=10000000;
char s[maxn],t[maxn];
int is_sub(char *s,char *t){
int len=strlen(s);
char *p=t;
for(int i=0;i<len;++i){
char *q=strchr(p,s[i]);
if(q==NULL) {
return 0;
}
else{
q[0]=' ';
p=q;
}
}
return 1;
}
int main(){
while(scanf("%s%s",s,t)==2){
printf("%s\n",is_sub(s,t)?"Yes":"No");
}
return 0;
}
经同学点拨,发现我的代码太烦了,参见坛友
初次发帖,水平很低,恳请各位不吝赐教赐教