栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

牛客--幸运的袋子

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

牛客--幸运的袋子

个人简介

⭐️个人主页:摸鱼の文酱博客主页‍♂️
博客领域:java编程基础,mysql
写作风格:干货,干货,还是tmd的干货
精选专栏:【Java】【mysql】 【算法刷题笔记】
博主的码云gitee,平常博主写的程序代码都在里面。
支持博主:点赞、收藏⭐、留言
作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

文章目录
  • 幸运的袋子
    • 1.原题链接
    • 2.题目要求
    • 3.基础框架
    • 4.解题思路
    • 5.完整代码
    • 6.涉及算法&总结

幸运的袋子 1.原题链接

幸运的袋子

2.题目要求

  一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。
例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3
你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以获得的多少种不同的幸运的袋子。


  样例输入: 3

    1 1 2

  样例输出: 2

3.基础框架

java版本的基础框架代码如下:

import java.util.Scanner;

public class  Main {
    public static void main(String[] args) {
      
    }
}
4.解题思路

  1.先把给定的球编号排序
  2.从第一个编号开始,向后遍历,判断添加下个数字以后,如果条件还能成立就继续下一个,否则就直接break;(由于排序的缘故,这个数不行,那么后面比它还大的数就更不行)
  3.当我们返回上层递归时,需要回溯,继续计算前面的括号和当前位置后面的号码可以构成幸运的袋子
  4.需要注意的是,如果当前数字为1时,也是可以继续下去的(1和任何正数的和一定大于他们的积)

5.完整代码
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = scanner.nextInt();
        }
        Arrays.sort(nums);
        System.out.println(count(nums,n,0,0,1));
    }

    private static int count(int[] nums, int n, int pos, int sum, int mutil) {
        int count = 0;
        for (int i = pos; i < n; i++) {
            sum+=nums[i];
            mutil*=nums[i];
            if(sum > mutil) {
                count = count + 1 + count(nums,n,i+1,sum,mutil);
            } else if(nums[i] == 1) {
                count = count + count(nums,n,i+1,sum,mutil);
            } else {
                break;
            }
            sum-=nums[i];
            mutil/=nums[i];
            while(i
                i++;
            }
        }
        return count;
    }
}

6.涉及算法&总结

递归 回溯

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/858030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号