C++代码:
int i,j,leave=0,s;
s=gas.size();
vector<int>num;
if(s==1)
{
if(gas[0]>=cost[0])
return 0;
else
return -1;
}
for(i=0;i<s;i++)
{
if(gas[i]<cost[i])
continue;
for(j=i;j<i+s;j++)
{
if(j<s)
{
leave=leave+gas[j]-cost[j];
if(leave<0)
break;
}
if(j>=s)
{
leave=leave+gas[j-s]-cost[j-s];
if(leave<0)
break;
}
}
if(leave>=0)
{
num.push_back(i);
}
leave=0;
}
sort(num.begin(),num.end());
if(num.size()>=1)
return num[num.size()-1];
else
return -1;
每处都测试可以循环与否;