南阳理工oj题目练习

编程入门 行业动态 更新时间:2024-10-24 22:27:08

<a href=https://www.elefans.com/category/jswz/34/1451279.html style=南阳理工oj题目练习"/>

南阳理工oj题目练习

我的代码:

#include <iostream>
#include <string>
using namespace std;int main()
{int N,pos,count;string A,B;cin>>N;while(N--){cin>>A>>B;count=pos=0;while(pos=B.find(A.c_str(),pos),pos!=string::npos){count++;pos++;}cout<<count<<endl;}return 0;
}

算法点评:

   总感觉有跟好的算法,这题好像是要凸显C++强大的位运算能力的,可我嫌麻烦就用了普通的子符串查找方法,可能是用的少的缘故吧。

  我开始想用位运算实现的思路是这样的:  把A对应的十进制数计算出来,这个应该不算麻烦。然后在B中取出所有和A的位数个字串转换为对应的十进制数存到一个数组中。

  最后遍历和做这样的运算: A&B+(~A)&(~B),又得同学可能一眼就看出来这就是传说中的同或运算,如果全1,就说明数组中的该元素和A是相同的。

好吧,我的表达能力不强,能看懂的就将就着看吧,。 总之一句,同或运算


oj推荐的最优算法:(感觉和我的一样,为毛线比我用的内存少呢?纳闷...)

#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1,s2;
int n;
cin>>n;
while(n--)
{
cin>>s1>>s2;
unsignedint m=s2.find(s1,0);
int num=0;
while(m!=string::npos)
{
num++;
m=s2.find(s1,m+1);
}
cout<<num<<endl;
}
}




更多推荐

南阳理工oj题目练习

本文发布于:2024-03-08 07:14:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1720167.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:南阳   理工   题目   oj

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!