码迷,mamicode.com
首页 > 其他好文 > 详细

幸运的袋子(深度优先遍历)

时间:2018-05-02 13:23:38      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:题目   深度优先遍历   lis   scan   幸运   arraylist   mod   break   des   

题目描述

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

输入描述:

第一行输入一个正整数n(n ≤ 1000)
第二行为n个数正整数x
i
(x
i
≤ 1000)

输出描述:

输出可以产生的幸运的袋子数
示例1

输入

3
1 1 1

输出

2
 1 /**
 2  * 幸运的袋子
 3       1、对于a+b>a*b 必然有 一个数为1
 4  * @author Dell
 5  *
 6  */
 7 
 8 import java.util.ArrayList;
 9 import java.util.Arrays;
10 import java.util.HashSet;
11 import java.util.List;
12 import java.util.Scanner;
13 import java.util.Set;
14 
15 public class Main {
16 
17     static public int dfs(int a[], int index, long sum, long multi) {
18         int count = 0;
19         for (int i = index; i < a.length; i++) {
20             sum += a[i];
21             multi *= a[i];
22 
23             if (sum > multi) {// 目前幸运接着递归
24                 count = count + 1 + dfs(a, i + 1, sum, multi);
25             } else if (a[i] == 1) { // a[i] = 1  还有机会
26                 count = count + dfs(a, i + 1, sum, multi);
27             } else {// 不幸运  退出
28                 break;
29             }
30 
31             sum -= a[i];
32             multi /= a[i];
33             for (; i < a.length - 1 && a[i] == a[i + 1]; i++) {
34                 // 相同号码 球取哪个 无区别 跳过
35             }
36         }
37         return count;
38     }
39     public static void main(String[] args) {
40         Scanner sc =new Scanner(System.in);
41         while(sc.hasNext()) {
42             int n = sc.nextInt();
43             int []a = new int[n];
44             for (int i = 0; i < a.length; i++) {
45                 a[i] = sc.nextInt();
46             }
47             Arrays.sort(a);
48             System.out.println(dfs(a,0,0,1));
49         }
50     }
51 
52 }

 

幸运的袋子(深度优先遍历)

标签:题目   深度优先遍历   lis   scan   幸运   arraylist   mod   break   des   

原文地址:https://www.cnblogs.com/the-wang/p/8979329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!