C 打印第四条边的任何有效大小以生成非退化简单四边形
我需要打印任何有效的值,它是一个四边形的第四条边的大小,它的其他三条边是给定的 问题链接: 下面是我的程序,但不知怎么的,在线法官不会接受,给我这个测试案例#2 “回答错误:最大值不小于96上其他值之和” 现在的问题是,我看不到测试用例#2上的输入96,因此不理解我的代码有什么问题。我在这里该怎么办C 打印第四条边的任何有效大小以生成非退化简单四边形,c,math,C,Math,我需要打印任何有效的值,它是一个四边形的第四条边的大小,它的其他三条边是给定的 问题链接: 下面是我的程序,但不知怎么的,在线法官不会接受,给我这个测试案例#2 “回答错误:最大值不小于96上其他值之和” 现在的问题是,我看不到测试用例#2上的输入96,因此不理解我的代码有什么问题。我在这里该怎么办 #include<stdio.h> long long int max(long long int x, long long int y); int main() { i
#include<stdio.h>
long long int max(long long int x, long long int y);
int main()
{
int t;
scanf("%d", &t);
while(t--)
{
long long int a,b,c, d, num;
scanf("%llu %llu %llu", &a, &b, &c);
num = max(a,max(b,c));
printf("%llu\n", num+1); //valid fourth side size - max(a,b,c) + 1
}
return 0;
}
long long int max(long long int x, long long int y)
{
return (x > y) ? x : y;
}
#包括
长整型最大值(长整型x,长整型y);
int main()
{
int t;
scanf(“%d”、&t);
而(t--)
{
长整型a,b,c,d,num;
scanf(“%llu%llu%llu”、&a、&b和&c);
num=max(a,max(b,c));
printf(“%llu\n”,num+1);//有效的第四面大小-最大(a,b,c)+1
}
返回0;
}
长整型最大值(长整型x,长整型y)
{
返回(x>y)?x:y;
}
我可以用第四方的一些其他有效值来解决它,比如a+b+c-1,但我想我需要知道上面的代码失败的原因。从链接的问题页面,对于第二个试用示例
12 34 56
,给定/正确的解决方案是42
。但是,max(a,b,c)
是56,而56-1
不是42。所以,我认为你需要一个更好的算法。我不知道如何解决这个问题,但是,对于长度a
、b
和c
,您可能需要注意线段的顺序(例如a b c d
,a c d
,b a c d
,b c a d
,b c a d
,c a b d
。然后,看看哪些是有效的。另外,如果有多个有效的解决方案,您是将每个解决方案输出到单独的行中,还是将它们放在同一行中?只是猜测而已。您可能需要对长度进行排序:低、中、高
。然后,看看顺序:lo,hi,mid,d
long-long-int
必须用%lld
扫描,而不是%llu
@CraigEstey我只需要为第四面打印一个有效值(我知道可能有多个可能的解决方案)也max(a,b,c)+1
对于第二个试用示例是57(即56+1),这可能是一个解决方案,所以没关系。我不明白为什么我需要对长度进行排序?从链接的问题页面,对于第二个试用示例12 34 56
,给定/正确的解决方案是42
。但是,max(a,b,c)
是56,而56-1
不是42。所以,我认为你需要一个更好的算法。我不知道如何解决这个问题,但是,对于长度a
、b
和c
,您可能需要注意线段的顺序(例如a b c d
,a c d
,b a c d
,b c a d
,b c a d
,c a b d
。然后,看看哪些是有效的。另外,如果有多个有效的解决方案,您是将每个解决方案输出到单独的行中,还是将它们放在同一行中?只是猜测而已。您可能需要对长度进行排序:低、中、高
。然后,看看顺序:lo,hi,mid,d
long-long-int
必须用%lld
扫描,而不是%llu
@CraigEstey我只需要为第四面打印一个有效值(我知道可能有多个可能的解决方案)也max(a,b,c)+1
对于第二个试用示例是57(即56+1),这可能是一个解决方案,所以没关系。我不明白为什么我需要对长度进行排序?