奇怪的设定(C++)
查看原帖
奇怪的设定(C++)
1144555
gdfz02sjy楼主2024/4/18 17:03

在调试的过程中发现了一个神奇的错误的代码

#include<bits/stdc++.h>
using namespace std;
long long a,b,c,d,minn,mind;
int main(){
	cin>>a>>b;
	long long sum[b];
	for(int i=0;i<b;i++)sum[b]=0;
	for(int i=0;i<a;i++){
		cin>>c;
		minn=999999;
		for(int j=0;j<b;j++){
			if(sum[j]<minn){
				minn=sum[j];
				mind=j;
			}
		}
		sum[mind]+=c;
	}
	minn=0;
	for(int j=0;j<b;j++)cout<<sum[j]<<endl;//用于调试 
	for(int j=0;j<b;j++){
			if(sum[j]>minn)minn=sum[j];
	}
	cout<<minn;
	return 0;
}

用样例一,它输出的结果是 6 6 8 8很明显答案错了 但如果将用于调试的那一段注释掉,却会输出4254849,测试多次输出都不变。用于测试的那一段只是单纯的输出,并没有改变值,为什么会出现这种玄学的情况?

2024/4/18 17:03
加载中...