c++ - 使用 C++ 的 Project Euler 17 字符串计数不正确

标签 c++ string count

<分区>

我编写了一个代码来执行 Project Euler 17 问题,其中指出: 如果数字1到5用单词写出来:一、二、三、四、五,那么总共用了3 + 3 + 5 + 4 + 4 = 19个字母。如果从1到1000的所有数字(一千)包括在内用单词写出来,将使用多少个字母?// 注意:不要计算空格或连字符。例如,342(三百四十二)包含 23 个字母,115(一百一十五)包含 20 个字母。在写数字时使用“and”符合英国的用法。

但是,我的代码似乎没有输出正确的答案。有人可以帮助我理解我在计算代码中的字符数时犯的错误吗?
我的代码(带输出)发布在: http://codepad.org/TEV4utVx

最佳答案

这些行:

if(i>20 && i<=100) 
{
  count  += it1->second.length();
  count  += it2->second.length();
}

总是将两个词的计数相加。考虑 i = 30 的情况,它应该是“三十”而不是“三十零”,我想你会看到问题所在。如果您在计数之前创建实际单词(可能打印它),这可能有助于调试。

关于c++ - 使用 C++ 的 Project Euler 17 字符串计数不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8808732/

相关文章:

c++ - 我可以从 C++ 程序中调用 Objective-C 类吗?

python - 从序列创建所有固定长度的不连续子序列

MySQL : Query and group by values in same column

sql - 如何计算 SQL 列中字符的实例数

python - 每个元素的反转计数

c++ - 对通过引用返回感到困惑

c# - 将 C++ 转换为 C#

c++ - 由于安装(EXPORT "foo-targets"...)在导出集中多次包含目标 "foo",aws-cpp-sdk 在 Windows 构建期间失败

java - 如何将路径放入变量而不出现空异常

java - 字符串转十六进制短java