列表

详情


QY5. 空中旅行

描述

牛牛有羊羊有了属于他们自己的飞机。于是他们进行几次连续的飞行。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

原站题解

Object C 解法, 执行用时: 2ms, 内存消耗: 256KB, 提交时间: 2017-11-29

int main(){
    int n,s,i;
    int cnt = 0;
    int oil[1000];
    scanf("%d %d",&n,&s);
    for(i = 0; i < n; i++){
        scanf("%d",&oil[i]);
        if(s - oil[i] >= 0){
            cnt++;
            s = s - oil[i];
        }
        else{
            break;
        }
    }
    printf("%d\n",cnt);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 352KB, 提交时间: 2019-03-21

#include <stdio.h>
int main()
{
    int n, s, i, count = 0, flag=0;
    scanf("%d %d",&n, &s);
    int trip[n];
 
    for(i = 0; i < n; i ++)
    {
        scanf("%d",&trip[i]);
    }
 
    for(i = 0; i < n; i ++)
    {
        if(s<trip[i])
        {
            break;
        }
        s = s-trip[i];
       /* else
        {
            count ++;
        }*/
         
    }
     
        printf("%d",i);
     
}

C 解法, 执行用时: 2ms, 内存消耗: 352KB, 提交时间: 2018-10-09

#include <stdio.h>
int main (){
    int s,n; 
    int sum = 0;
    int num = 0;
    scanf("%d %d",&n,&s);
    int f[n];
    for(int i = 0; i < n;i++){
        scanf("%d",&f[i]);
        sum = sum + f[i];
        if(s >= sum) {
            num++;
            continue;
        } else {
            break;
        }
    }
    printf("%d",num);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2019-04-13

#include<stdio.h>
#include<string.h>
int main()
{
	int n,s;
	scanf("%d%d",&n,&s);
	int f[1000];
	int i;
	for (i=0;i<n;i++)
	{
		scanf("%d",&f[i]);

	}
	int num=0;
	for (i=0;i<n;i++)
	{
		if(s>=f[i])
		{
			num++;
			s=s-f[i];
		}
		else 
			break;

	}
	

	printf("%d\n",num);




	return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2019-03-04

#include<stdio.h>
int main()
{
    int n,s,i;
    int a[1000];
    int t=0;
    scanf("%d%d",&n,&s);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
    {t=t+a[i];
    if(t>s)
        {
       
            break;
        }
    }
   
    printf("%d\n",i);
   
    return 0;
}

上一题