中兴警察那道题代码,求黑白鼠那道题代码

package nowcoder.zte;

import java.util.Arrays;

public class Q3 {
    public static void main(String[] args) {
        int n = 4, P = 3, Q = 1;
        int[] arr = {9, 8, 2, 5};
        System.out.println(getMinCount(n, P, Q, arr));
    }

    private static int getMinCount(int n, int p, int q, int[] arr) {
        int max = 0;
        int res = 0;
        boolean flag = true;
        while (flag) {
            max = getMax(arr);
            arr[max] -= p;
            for (int i = 0; i < n; i++) {
                if (i == max)
                    continue;
                arr[i] -= q;
            }
//            System.out.println(Arrays.toString(arr));
            res++;
            flag = false;
            for (int i = 0; i < n; i++) {
                if (arr[i] > 0)
                    flag = true;
            }
        }
        return res;
    }

    private static int getMax(int[] arr) {
        int max = 0;
        int index = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
                index = i;
            }
        }
        return index;
    }
}
全部评论
你这个全部通过了吗
点赞 回复 分享
发布于 2017-09-08 12:30
黑白耗子我只通过9/11 可能有的超出最大范围的数没考虑
点赞 回复 分享
发布于 2017-09-08 12:37
/* *和题主想法差不多,都是优先打血量高的。最后好像是7/10 **/ public class zteTwo { // METHOD SIGNATURE BEGINS, THIS METHOD IS REQUIRED public static int minimumNumberOfGunShots(int num, int shotDegrade, int remDegrade, int[] health) { if(health == null||health.length ==0){ return 0; } int shootNum = 0; Arrays.sort(health); for(int i=num;i>=0;i--){ int thisNum =0; while(health[i]>0){ health[i] -= shotDegrade; thisNum++; } //遍历 for(int j = i-1;j>=0;j--){ healt敏感词hisNum*remDegrade; } shootNum += thisNum; } return shootNum; } }
点赞 回复 分享
发布于 2017-09-08 14:55
老哥你这个好像有点问题,第一个测试用例输出是8哎。 这是我黑白鼠那道题代码,仅供参考: //#include <iostream> //using namespace std; // //struct mouse //{ // int first; // int second; // int third; //}; // //int GetDifference(int year, int k) //{ // mouse white = { 0 }, black = { 0 }; // white.first = black.first = k; // for (int i = 0; i < year; ++i) // { // white.third = white.second; // int tmp = white.first;//k // white.first = white.first * 2 + white.second * 3; // white.second = tmp; // // black.second = black.first; // black.first *= 3; // } // int value = white.first + white.second + white.third\ // - black.first - black.second; // return value >= 0 ? value : (-value); //} // //int main() //{ // int n, m; // //cin >> n>> m; // n = 3, m = 5; // int ret = GetDifference(n, m); // cout << ret << endl; // system("pause"); // return 0; //}
点赞 回复 分享
发布于 2017-09-08 15:35

相关推荐

01-18 09:26
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务