codevs 1034_汽车装油_模拟

lzusa 发布于 2019-05-09 5 次阅读


题目描述

设在一环行公路上有N个汽车站,每一站存有若干数量的汽油(其中有的站可能不存)。现在使一辆原来没有油的汽车从某站依反时针方向沿公路行驶,车站编号为反时针;每到一站即把该站的汽油全部带上(出发的站也如此)。试求从哪几站出发可以使汽车从该站出发环行一周,不致在中途因缺油而停车。


思路

暴力模拟枚举每一个点,然后将油量记录下来就可以了
O(n^2)

#include <stdio.h>
int a[1001][3];
int main()
{
    int n;
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        scanf("%d",&a[i][1]);
    for (int i=1;i<=n;i++)
        scanf("%d",&a[i][2]);
    int fg=0;
    for (int i=1;i<=n;i++)
    {
        int t=a[i][1]-a[i][2],j=i+1,fl=0;
        if (i==n) j=1;
        if (t<=0) fl=1;
        while (t>=0&&j!=i)
        {
            if (t>=0) 
            {
                t+=a[j][1]-a[j][2];
                j++;
                if (j==n+1) j=1;
            }
            else 
            {
                fl=1;
                break;
            }
        }
        if (t<0) fl=1;
        if (fl==0) 
        {
            printf("%d ",i);
            fg=1;
        }
    }
    if (fg==0) printf("No Result!");
}