C++计数代码输出超大值问题求助(USACO Bronze Jan #2)
解决C++统计数对时出现异常超大值的问题
嘿,你遇到的这个超大异常值问题根本不是溢出——是变量初始化的坑!
先看你代码里的变量声明行:
int a1, a2, b1, b2, c1, c2 = 0;
这里你只把c2初始化为0了,剩下的a1、a2、b1、b2、c1都是未初始化的局部变量,它们会保留内存里的随机垃圾值。当你统计数对的时候,这些变量在没有匹配到对应数对时,不会被赋值,输出时就会把那些随机垃圾值打出来,也就是你看到的超大奇怪数字。
修复方法
把所有统计变量都明确初始化为0,修改后的声明应该是:
int a1=0, a2=0, b1=0, b2=0, c1=0, c2=0;
验证一下
你的输入数据是5组对:(1,2)、(2,2)、(1,3)、(1,1)、(3,2),其中符合你统计规则的只有(1,2)、(1,3)、(3,2)各1次,剩下的都不在你的6种数对里。修复后程序应该输出:1 1 0 0 0 1,完全正常。
另外提个小建议:你可以用else if代替多个if,这样能稍微提高一点效率,但不是必须的——主要问题还是初始化!
内容的提问来源于stack exchange,提问作者scubnoob
相关产品推荐
相关产品推荐

