您的位置:首页 > 编程语言 > Java开发

华为机试---罪犯转移

2016-06-21 15:05 239 查看


题目描述

C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行值之和不超过t,问有多少种选择的方式? 

输入描述:
第一行数据三个整数:n,t,c(1≤n≤2e5,0≤t≤1e9,1≤c≤n),第二行按入狱时间给出每个犯人的罪行值ai(0≤ai≤1e9)


输出描述:
一行输出答案。


输入例子:
3 100 2
1 2 3


输出例子:

2

import java.util.Scanner;

public class Main{

    public static void main(String[] args){

        Scanner scan = new Scanner(System.in);

        while(scan.hasNext()){

            int n = scan.nextInt();

            int t = scan.nextInt();

            int c = scan.nextInt();

            int[] crime = new int
;

            for(int i = 0 ; i < n ; i++){

                crime[i] = scan.nextInt();

            }

            int sum = 0;

            int count = 0;

            for(int i = 0 ; i < c ; i++){

                sum += crime[i];

            }

            if(sum <= t) count++;

            for(int i = c ; i < n ; i++){

                sum = sum - crime[i - c] + crime[i];

                if(sum <= t) count++;

            }

            System.out.println(count);

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  华为 java