首页 > 试题广场 >

空中旅行

[编程题]空中旅行
  • 热度指数:10514 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛有羊羊有了属于他们自己的飞机。于是他们进行几次连续的飞行。f[i]表示第i次飞行所需的燃油的升数。飞行只能按照f数组所描述的顺序进行。
起初飞机里有s升燃油,为了正常飞行,每次飞行前飞机内燃油量应大于等于此处飞行所需要的燃油量。请帮助他们计算在不进行加油的情况下他们能进行的飞行次数。

输入描述:
输入包括两行,第一行包括两个整数n和s(1 ≤ n ≤ 50, 1 ≤ s ≤ 1000),分别表示计划飞行的次数和飞起初始状态下有的燃油量。
第二行包括n个整数f[i], (1 ≤ f[i] ≤ 1000), 表示每次计划飞行所需要的燃油量。


输出描述:
输出一个整数,表示他们能进行的飞行次数。
示例1

输入

7 10
1 2 3 4 5 6 7

输出

4
题目质量低的要命,远远比不上2017 和 2019年的题目,怪不得热度这么低。看了半天我还以为是顺序贪心数组长度,搞了半天原来是首个顺序子数组长度。题目出的质量令人堪忧!
def method(num,s):
    dp = [0 for _ in range(len(num))]
    for i in range(len(num)):
        temp = num[i]
        j = i
        while j<len(num) and temp<=s:
            j += 1
            if j<len(num):
                temp += num[j]
        dp[i] = j-i
    return dp[0]
if __name__=='__main__':
    n,s = list(map(int,input().split()))
    num = list(map(int,input().split()))
    print(method(num,s))


发表于 2019-09-02 21:49:56 回复(0)
n, s = map(int, input().split())
f = list(map(int, input().split()))
num = 0
for i in range(n):
    if s >= f[i]:
        num += 1
        s -= f[i]
    else:
        break
print(num)

发表于 2019-04-04 11:15:16 回复(0)
n,s = map(int,input().split())
f = list(map(int,input().split()))

for i in range(n):
    if f[i] <= s :
        s = s - f[i]
    else:
        i -= 1
        break
print(i+1)

发表于 2019-03-29 00:40:57 回复(0)
n,s=list(map(int,input().split()))
f=list(map(int,input().split()))
accum=[0]*n
accum[0]=f[0]
for i in range(n-1):
    accum[i+1]=accum[i]+f[i+1]
for x in accum:
    if x==s:
        print(accum.index(x)+1)
        break
    elif x>s:
        print(accum.index(x))
        break
    elif accum[-1]<s:
        print(n)
        break

发表于 2019-03-20 15:05:39 回复(1)

python 解法

这么简单,怕不是给小学生做的吧?

a, b = map(int, input().split())
c = list(map(int, input().split()))
res = 0
for i in range(a):
    if b >= c[i]:
        res += 1
        b -= c[i]
    else:
        break
print(res)
发表于 2019-02-24 18:43:05 回复(1)
inp1 = [int(x) for x in input().split()]
inp2 = [int(x) for x in input().split()]
n = inp1[0]
s = inp1[1]
for i in range(n) :
    if s - inp2[i] >= 0:
        s -= inp2[i]
    else :
        break
if s - inp2[i] >= 0 :
    print(i+1)
else :
    print(i)

发表于 2019-02-15 18:03:30 回复(0)