【发布时间】:2020-10-25 06:37:55
【问题描述】:
请帮助我。 我的代码有什么问题?我的代码不适用于第三个示例案例和其他一些数字?
问题:
格式化输入 输入以整数 T 开头,描述测试用例的数量。每个测试用例都以整数 N 开头,即 Lili 拥有的盒子数。下一行将包含 N 个数字 Vi,每个数字描述第 i 个盒子中硬币的价值。保证该值始终在 -1000000 和 1000000 之间。
格式化输出 对于每个测试用例,输出一行包含“Case #X: Y”,其中 X 是测试用例编号,Y 是 Lili 通过恰好选择 2 个框可以获得的最大值。
约束
•1 ≤ T ≤ 10
• 2 ≤ N ≤ 1, 000, 000
• -1, 000, 000 ≤ Vi ≤ 1, 000, 000
样本输入(标准输入)
3
5
1 2 3 4 5
4
4 4 4 4
3
10 1 2
样本输出(标准输出)
案例#1:9
案例 #2:8
案例 #3:12
*所以,这个问题想将第一个和第二个最大数相加
*Idk 为什么我的代码在第三个示例案例中不起作用,并且某个数字总和为 20,请帮助
这是我到目前为止写的内容
#include<stdio.h>
int main(){
int t;
long int n, max1, max2, v[100];
scanf("%d", &t);
for(int i=1; i<=t; i++){
if(t>=1 && t<=10){
scanf("%ld", &n);}
if(n>=2 && n<=1000000){
for(long int j=0; j<n; j++){
scanf("%ld", &v[j]);
}
max1 = v[0];
for(long int j=0; j<n; j++){
if(max1<v[j]){
max1=v[j];
}
}
max2 = v[0];
for(long int j=0; j<n; j++){
if(v[j]!=max1 && v[j]>max2){
max2=v[j];
}
}
long int sum=max1+max2;
printf("Case #%d: ", i);
printf("%ld\n", sum);
}
}
return 0;
}
【问题讨论】:
-
“我知道为什么我的代码不起作用”。找出方法是调试代码。在调试器中运行您的代码并逐行逐行检查它正在执行的操作,并找出与预期不符的地方。
-
好的,我会尝试调试我的代码,谢谢 :)
-
阅读this C reference,C 编译器的文档(可能是GCC...),以及调试器的文档(可能是GDB...)
-
如果N实际上是100万的最大值,你还要尝试读入一个有100个条目的数组吗?
标签: c loops sum max calculation