所以,我正在做一个任务,要求找出区间[m,n]中的正整数的个数,并且数字之和最小。
我声明了一个计算数字总和的函数,但是在查找数字的数量时遇到了问题。下面是我为查找最小数字总和和计数而编写的代码。我希望我已经说清楚了。如果你能帮助我修复这个代码,我将不胜感激。
输入:1 100输出:3
int minSum(int m, int n){
for (int i=m; i<=n; i++){
int sm=sum(i);
if (sm<min) min=sm;
if (min==sm) cnt++;
}
return cnt;
}
3条答案
按热度按时间mkh04yzy1#
问题:
cnt
和min
未在函数中初始化(也未定义)1.当发现新的最小值时,
cnt
不复位。您的代码很容易修复。例如:
dwbf0jvd2#
对于初学者来说,变量
min
和cnt
没有在函数中声明,如果它们是文件作用域变量,那么在函数中使用文件作用域变量是个坏主意。这个函数可以看起来像这样。我假设数字和不能是负数。
请注意,原始代码中的for循环
可以调用未定义的行为,例如当
n
等于INT_MAX
时。vwkv1x7d3#
或者更少的暴力: