In: Computer Science
Java language please
Problem
There are N houses for sale. The i-th house costs Ai dollars to buy. You have a budget of B dollars to spend.
What is the maximum number of houses you can buy?
Input
The first line of the input gives the number of test cases, T. T test cases follow. Each test case begins with a single line containing the two integers N and B. The second line contains N integers. The i-th integer is Ai, the cost of the i-th house.
Output
For each test case, output one line containing Case #x: y, where x is the test case number (starting from 1) and y is the maximum number of houses you can buy.
Limits
Time limit: 15 seconds per test set.
Memory limit: 1GB.
1 ≤ T ≤ 100.
1 ≤ B ≤ 105.
1 ≤ Ai ≤ 1000, for all i.
Test set 1
1 ≤ N ≤ 100.
Test set 2
1 ≤ N ≤ 105.
Sample
Input  | 
Output  | 
3 4 100 20 90 40 90 4 50 30 30 10 10 3 300 999 999 999  | 
Case #1: 2 Case #2: 3 Case #3: 0  | 
In Sample Case #1, you have a budget of 100 dollars. You can buy
the 1st and 3rd houses for 20 + 40 = 60 dollars.
In Sample Case #2, you have a budget of 50 dollars. You can buy the
1st, 3rd and 4th houses for 30 + 10 + 10 = 50 dollars.
In Sample Case #3, you have a budget of 300 dollars. You cannot buy
any houses (so the answer is 0).
this is what I have so far
import java.util.*;
class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int testCases = in.nextInt();
for (int testCase = 1; testCase <= testCases; testCase++)
{
int numberOfHouses = in.nextInt();
int budget = in.nextInt();
int[] costOfHouses = new int[numberOfHouses];
for (int index = 0; index < numberOfHouses; index++) {
costOfHouses[index] = in.nextInt();
}
int ans = buyMaximumHouses(costOfHouses, budget);
System.out.println("Case #" + testCase + ": " + ans);
}
}
static int buyMaximumHouses(int[] costOfHouses, int budget) {
// TODO: implement this method to return maximum houses that
can
// be bought with the given budget.
}
}

import java.util.Collections;
import java.util.ArrayList;
import java.util.Scanner;
class Solution {
    private static long N;
    private static long A;
    private static long B;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
           N = sc.nextInt();
        for (long i = 0; i < N; i++) {
            A = sc.nextInt();
            B = sc.nextInt();
            ArrayList<Integer> houses = new ArrayList<Integer>();
            for (long j = 0; j < A; j++) {
            houses.add(sc.nextInt());
            }
            long no_of_houses = findTheHouses(houses,B);
            System.out.println("Case #"+ (i+1) +": "+no_of_houses);
        }
        sc.close();
    }
    private static long findTheHouses(ArrayList<Integer> houses, long max_cost) {
        Collections.sort(houses);
        long count_budget =0;
        int houses_count=0;
        do{
                count_budget = count_budget +houses.get(houses_count);
            if(count_budget<=max_cost)
                houses_count++;
                else
                break;
        }while(houses.size()>houses_count);
        
    return houses_count;    
    }
}
I hope it helps.