【发布时间】:2014-02-15 10:48:52
【问题描述】:
我想做的是找到一种更快的方法来执行相同的程序,但执行速度更快。
#include <cstdio>
#include <cstring>
int main ()
{
int br=0, c, n, b, e, i, q, g;
char t[7000], a[7000];
scanf("%d" ,&n);
for (g=0; g<n; g++) // number of test cases
{
scanf ("%7000s",&t);
c=strlen(t);
scanf ("%7000s",&a);
b=strlen(a);
for (i=0; i<b; i++) // comparing them
{
for (q=0; q<c; q++)
{
if (a[i]==t[q] && a[i]!='\0' && t[q]!='\0')
{
br++;a[i]='\0';t[q]='\0';
}
}
}
printf("%d \n", br);
br=0;
}
return 0;
}
程序本身会这样做:
第一个输入:测试用例的数量
第二:您必须为每个测试用例输入 A 数组和 B 数组
程序必须检查是否有任何来自 B 的常见字母与 A 匹配,如果有,则输出它们的数量。
Example input:
2
qwerty
abc
abcde
bcex
Output:
0
3
我需要的是让它运行得更快。 任何帮助都将不胜感激。 :)
【问题讨论】:
-
只是为了兴趣..你有没有尝试从控制台输入 7000 个字符?
-
不:D 为什么?这是否与问题有关?
-
当您使用
%s扫描字符串时删除&,例如scanf ("%7000s", &t);应该是scanf ("%7000s", t);。顺便说一句,您的代码看起来更像是 C 而不是 C++。 -
这不是 codechef 二月挑战的问题吗?比赛仍在进行中,您无法获得这样的解决方案..
-
使用查找表,这将使您得到 O(N+M),其中 N 和 M 分别是两个字符串的长度。如果你能比这更快地得到它,你应该做我的工作。
标签: c++ arrays string performance compare