我正在做一个 spoj 的问题,我试图这样做,但我总是得到 TLE(时间限制已过期)问题是酒店。这是我的代码,请你告诉我优化它的方法。
#include<stdio.h>
int main()
{
unsigned long long int a,b,i;
scanf("%llu %llu",&a,&b);
unsigned long long int arr[a];
for(i=0;i<a;i++)
{
scanf("%llu",&arr[i]);
}
unsigned long long int d;
unsigned long long int k,z=0;
for(i=0;i<a;i++)
{
d = arr[i];
for(k=i+1;k<a+1;k++)
{
if (d<b)
{
if(z<d)
z = d;
}
else
if(d==b)
{
z = d;
break;
}
else
break;
d = d + arr[k];
}
if(d==b)
break;
}
printf("%llu",z);
return 0;
}
在这种情况下,如果输入 5 12 ,这五个是 2 1 3 4 5 使 12 然后我这样做:首先我将 12 与 2 进行比较,然后是 2+1 ,然后是 2+1+3 等等5 它将 12 与 1 、 1+3 、 1+3+4 .. 进行比较,以这种方式,当我发现等于 12 时,我只采用连续的并中断,否则它会一直持续到最后。
希特什