竞赛讨论区 > A题测试用例的问题

A题测试用例的问题

头像
bughunter
编辑于 2020-11-22 21:53:50 APP内打开
赞 0 | 收藏 0 | 回复0 | 浏览719
我认为A题正确做法一定要给菜的价格排序,然后先付贵的,再付便宜的,否则就会出现错误,我们考虑一种边界值的情况:卡钱70,然后有两个菜,一个1元,一个70元,如果先付1元的,打七折,剩下69.3,就不够买70了,但是如果先付70,再付1元就可以,但是我试了一下,不进行排序,或者是排序了之后先付小的也还是通过了,所以测试用例是不是没考虑这种情况呢
import java.util.Scanner;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner (System.in);
        int t = in.nextInt();
        int n;
        double m;
        int[] f = new int[t];    //结果
        for(int i = 0; i < t; i++)
        {
            f[i] = 1;
            n = in.nextInt();    //菜数
            m = in.nextInt();    //卡钱
            int[] c = new int[n];
            for(int j = 0; j < n; j++)
            {
                c[j] = in.nextInt();
            }
            Arrays.sort(c);    //这一步不做也能通过,但实际上不符合逻辑
            for(int j = n - 1; j >= 0; j--)
            {
                if(m >= c[j])
                {
                    m = m - c[j] * 0.7;
                }
                else
                {
                    f[i] = 0;
                    break;
                }
            }
            if(f[i] == 1)
                System.out.println("yes");
            else
                System.out.println("no");
        }
    }
} 

0条回帖

回帖
加载中...
话题 回帖

近期热帖

等你来战

查看全部

热门推荐