我编的程序运行和答案一样 OJ网上总提交时是0, 大家帮我看看我的哪里有问题
发布网友
发布时间:2023-07-04 02:59
我来回答
共2个回答
热心网友
时间:2023-09-24 02:30
先说问题好了,你确定 for(i=0;i<=2*n-4;i++) 这里是i++吗
第一次:a[0]*a[3]-a[1]*a[2] 没问题(x1*y2-y1*x2)
但你确定第二次:a[1]*a[4]-a[2]*a[3] 也没问题?(y1*x3-x2*y2)
下面说一些改进意见:
首先不提倡像long int a[2*n];这样动态分配数组空间,虽然gcc下可以编译通过,但说实话不太推荐这么写,因为有些编译器是通不过的,还是老老实实用malloc或者new来分配会比较好。
建议这题没必要使用数组来记录每组x, y。当前要用的记录下来就行了。这题虽然n最大才100,但万一n允许开的很大搞不好你这题会内存溢出(只是说有这种可能性)
下面是我写的程序可以参考下:
#include <stdio.h>
int main()
{
long n, i;
double s;
while(scanf("%ld", &n), n)
{
s = 0.0;
long x1, y1, xn, yn;
long xk, yk, xk_1, yk_1;
scanf("%ld%ld", &xk_1, &yk_1);
x1 = xk_1;
y1 = yk_1;
for(i=1;i<n;i++)
{
xk = xk_1;
yk = yk_1;
scanf("%ld%ld", &xk_1, &yk_1);
if(i==n-1)
{
xn = xk_1;
yn = yk_1;
}
s += (xk * yk_1 - xk_1 * yk) / 2.0;
}
s += (xn * y1 - x1 * yn) / 2.0;
printf("%.1lf\n", s);
}
return 0;
}
热心网友
时间:2023-09-24 02:30
可能是空间复杂度或者时间复杂度不符合要求,只是结果正确未必唯一要求追问系统给我的回复是
Case num
Result
Score
Time
Memory
1
Wrong Answer
0
0MS
1064K
说的是答案 错误 但是我运行的和答案一样啊