牛牛有羊羊有了属于他们自己的飞机。于是他们进行几次连续的飞行。f[i]表示第i次飞行所需的燃油的升数。飞行只能按照f数组所描述的顺序进行。
起初飞机里有s升燃油,为了正常飞行,每次飞行前飞机内燃油量应大于等于此处飞行所需要的燃油量。请帮助他们计算在不进行加油的情况下他们能进行的飞行次数。
输入包括两行,第一行包括两个整数n和s(1 ≤ n ≤ 50, 1 ≤ s ≤ 1000),分别表示计划飞行的次数和飞起初始状态下有的燃油量。 第二行包括n个整数f[i], (1 ≤ f[i] ≤ 1000), 表示每次计划飞行所需要的燃油量。
输出一个整数,表示他们能进行的飞行次数。
7 10 1 2 3 4 5 6 7
4
分享一个更简单的,只需要每次飞行前检查一下燃油是否还够就好了。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n, s; n = sc.nextInt(); s = sc.nextInt();
for (int i=0; i<n; i++) {
int in = sc.nextInt();
if (s - in < 0) {
System.out.println(i);
return;
}
s -= in;
}
System.out.println(n);
}
}
#include <iostream>
using namespace std;
int main()
{
int n, s, det, cnt = 0;
cin >> n >> s;
while (n--)
{
cin >> det;
if (s - det >= 0)
cnt++,s-=det;
else break;
}
cout << cnt << endl;
return 0;
}
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin=new Scanner (System.in);
int n=cin.nextInt();//计划飞行的次数
int s=cin.nextInt();//起初始状态下有的燃油量
int sum=0;
while (s>=0 && n>0) {
s=s-cin.nextInt();
if(s>=0)sum++;
n--;
}
System.out.print(sum);
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] f = new int[n];
int s = sc.nextInt();
int i;
for (i = 0; i < n; i++) {
f[i] = sc.nextInt();
}
i = 0;
while (s >= 0 && i < n) {
s -= f[i++];
}
if (i == n) {
System.out.println(i);
} else {
System.out.println(i - 1);
}
}
}
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
#include<iostream>
using namespace std;
int main(){
int n,s;
cin>>n>>s;
int* mile=new int[n];
for(int i=0;i<n;i++)
cin>>mile[i];
int total=0,count=0;
while(total<s){
if(total+mile[count]>s)
break;
total+=mile[count];
count++;
if(count==n)
break;
}
cout<<count<<endl;
}
import java.util.Scanner;
public class Main{
public static void main(String[] args){
try(Scanner in = new Scanner(System.in)){
int n = in.nextInt(),s = in.nextInt(),i = 0;
int[] a = new int[n];
while(i < n){
a[i] = in.nextInt();
i++;
}
System.out.println(helper(a,s));
}
}
public static int helper(int[] a,int s){
int sum = 0;
for(int i = 0;i < a.length;i++){
sum += a[i];
if(sum > s) return i;
}
return a.length;
}
}
# coding=utf-8while1:limit,all=map(int,raw_input().split())l=map(int,raw_input().split())i=0exp=0whilei<=limit-1andi<=len(l) andexp<=all:ifexp+l[i]<=all:exp+=l[i]i+=1else:breakprintibreak
var arr1 = readline().split(' ');
var arr2 = readline().split(' ');
var sum = arr1[1];
var max = 0;
var count = 0;
var flag = false;
for(var i = 0;i<arr2.length;i++){
max += parseInt(arr2[i]);
if(max > sum){
flag = true;
count = i;
break;
}
}
if(!flag){
count = arr2.length;
}
//count = arr2.length;
print(count); 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))
爱奇艺的校招编程题也太简单了8!!!
private static int solution(int[] arr, int s) {
int res = 0;
int idx = 0;
while (idx < arr.length && s >= arr[idx]) {
s -= arr[idx];
idx++;
res++;
}
return res;
}