提交分數只有60,說明還有40%的測驗用例通不過,實在不知道哪里有問題,來個大佬看下或者看出哪個測驗用例會出現問題,下面貼上題目和代碼。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define N (int)1e5+5
int r, y, g;
int judge(int a, int b, int c);
int judge(int a, int b, int c) ///a是紅綠燈標號和無紅綠燈s[][0]
{ ///b是時間s[][1]
int i; ///c是總用時result
c -= b;
if (a == 1) ///當順序是紅,綠,黃時
{
for (i = 2;;i++)
{
if (i%3 == 1)
c -= r;
else if (i%3 == 2)
c -= g;
else
c -= y;
if (c < 0)
break;
}
if (i%3 == 1)
return abs(c);
else if (i%3 == 2)
return 0;
else
return abs(c)+r;
}
else if (a == 2) ///當順序是黃,紅,綠時
{
for (i = 2;;i++)
{
if (i%3 == 1)
c -= y;
else if (i%3 == 2)
c -= r;
else
c -= g;
if (c < 0)
break;
}
if (i%3 == 1)
return abs(c)+r;
else if (i%3 == 2)
return abs(c);
else
return 0;
}
else ///當順序是綠,黃,紅時
{
for (i = 2;;i++)
{
if (i%3 == 1)
c -= g;
else if (i%3 == 2)
c -= y;
else
c -= r;
if (c < 0)
break;
}
if (i%3 == 1)
return 0;
else if (i%3 == 2)
return abs(c)+r;
else
return abs(c);
}
}
int main()
{
int s[N][2], n, result = 0;
int i, j;
memset(s, 0, sizeof(s));
scanf("%d %d %d", &r, &y, &g);
scanf("%d", &n);
for (i = 0; i < n; i++)
for (j = 0; j < 2; j++)
scanf("%d", &s[i][j]);
for (i = 0; i < n; i++)
{
if (s[i][0] == 0)
result += s[i][1];
else
result += judge(s[i][0], s[i][1], result);
}
printf("%d", result);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/111576.html
標籤:C語言
上一篇:為什么不對
下一篇:二項式近似構建高斯卷積核
