【问题标题】:Get input faster in c++在 C++ 中更快地获取输入
【发布时间】:2014-03-11 03:12:58
【问题描述】:

我制作了一个需要 1.01 秒且时间限制为 1 秒的程序。所以我需要提高输入或输出速度的方法。

我需要取两个词{(非空格)可以是upper 。 lower, numbers} 作为输入,最快的方法是什么。我不会把我的代码放在这里,因为这是一场持续的比赛,我想用简单的方式解释一下。

这是代码,我需要更好的方法来输入这两个词。欢迎任何其他建议。

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    std::string a, b;
    int number_cases=0,i,j,count=0;
    cin>>number_cases;
    while(number_cases!=0)
    {
        cin>>a;
        cin>>b;
        for(i=0;i<a.size();i++) {
            for(j=0;j<b.size();j++) {
                if(a[i]==b[j]) {
                    count++;
                    b[j]='#';
                    break;
                }
            }
        }
        cout<<count<<endl;
        count=0;
        --number_cases;
    }
}

【问题讨论】:

  • 没有足够的信息来诊断某些事情......抱歉。 “启用优化,以多核方式进行”.. 这些建议都太笼统了。
  • 您需要大大扩展此描述您当前所做的事情,因为它无法回答
  • 这太模糊了,任何人都无法提供有用的答案。没有代码,就不可能识别性能问题。投票结束。
  • 您需要大大增加搜索次数才能获得惰性网络答案!我什至没有在这里链接我自己的相关答案
  • 请将相关代码压缩为SSCCE将其包含在您的问题中。目前,您提供的网站上的内容对公众不可见。如果它在您的问题得到回答后消失,那么它的价值和任何答案都会显着下降。

标签: c++ input output


【解决方案1】:

您的意见不是在花时间。

您的角色比较是嵌套循环!这是 O(n.m) 的复杂度,对于大字符串来说表现非常糟糕。考虑两个 1024 个字符的字符串。

如果您描述了问题,我们可能会给您提示,但这是您的参赛作品。

我只想说,输入很可能不是你担心的。

【讨论】:

    【解决方案2】:

    如果您只需要最低限度的加速,用旧的 C 函数替换 c++ STL 输入/输出函数就可以解决问题。

    cout<<count<<endl;
    

    可以

    printf("%i\n",count);
    

    C++ 流操作符是有争议的,但一般来说它们更健壮,而 C 输入/输出操作更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多