`
jiaoxujin
  • 浏览: 63180 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

排列组合在工作中的实际运用

阅读更多


个人理解:这个问题的本质是,每一行不选和选1,对于乘积的结果是没有影响的,所以乘积结果取决于你选了多少个3和多少个9,同时注意到3和9的关系,选了一个9也就相当于选了两个三,也就是最终乘积的不同结果的个数取决于能够选到多少个3,能选到多少个9,也就是有多少个不同的结果,那就是看个最值
设有x个3和y个9,显然是当x=0,y=6的时候可以取到最大,也就是说最多可以选到6*2=12个3,这12个值每个都能取道,所以,最终结果是original score共有12种值

=====================================================================

楼上的说到点子上去了,,但实际上是 14种值,,你忘记加上 1 和 0 了.
我用程序"暴力"破解的结果是这样的:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
* @author Xujin.Jiao
*
*/
public class Caculate {
    private static final int[] pf = {0, 1, 3, 9};
    private static final int[] cost = {0, 1, 3, 9};
    private static final int[] ofDay = {0, 1, 3, 9};
    private static final int[] impact = {0, 1, 3, 9};
    private static final int[] sr = {0, 1, 9};
    private static final int[] bd = {0, 1, 9};

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int totalSels = 0;
        int value = 0;
        List<Integer> valueList = new ArrayList<Integer>();
       
        totalSels = pf.length * cost.length * ofDay.length *
                    impact.length * sr.length * bd.length;
       
        for (int i = 0; i < pf.length; i++) {
            for (int j = 0; j < cost.length; j++) {
                for (int k = 0; k < ofDay.length; k++) {
                    for (int l = 0; l < impact.length; l++) {
                        for (int m = 0; m < sr.length; m++) {
                            for (int n = 0; n < bd.length; n++) {
                                value = (0 == pf[i] ? 1 : pf[i]) * (0 == cost[j] ? 1 : cost[j]) * (0 == ofDay[k] ? 1 : ofDay[k]) *
                                        (0 == impact[l] ? 1 : impact[l]) * (0 == sr[m] ? 1 : sr[m]) * (0 == bd[n] ? 1 : bd[n]);
                                if (0 == pf[i] && 0 == cost[j] && 0 == ofDay[k] &&
                                    0 == impact[l] && 0 == sr[m] && 0 == bd[n]) {
                                    value = 0;
                                }
                                if (!valueList.contains(new Integer(value))) {
                                    valueList.add(new Integer(value));
                                }
                            }
                        }
                    }
                }
            }
        }

        System.out.println("There are " + totalSels + " different selections.");
        System.out.println("There are " + valueList.size() + " different values.");
       
        System.out.println("These values are listed as follows:");
        Collections.sort(valueList);
        for (int i = 0; i < valueList.size(); i++) {
            System.out.println(valueList.get(i).toString());
        }
    }

}




There are 2304 different selections.
There are 14 different values.
These values are listed as follows:
0
1
3
9
27
81
243
729
2187
6561
19683
59049
177147
531441
分享到:
评论

相关推荐

    高中数学中排列组合

    在高中数学中,排列组合是概率论与统计学的基础,也是解决实际问题的重要工具。它主要涉及两个概念:排列和组合。排列强调元素的顺序,而组合则不考虑顺序。 **排列(Permutation)**指的是从n个不同元素中取出m(m...

    qtc++排列组合实现

    在实际项目中,如果需要保存或读取排列组合的结果,可以考虑使用Qt的文件操作类如`QFile`,`QTextStream`,或者JSON、XML等格式进行序列化和反序列化。 通过以上方法,我们可以在Qt C++环境中高效地实现排列组合...

    算法 排列组合生成器 后端

    在实际应用中,排列组合生成器的后端设计可能会包含以下关键部分: 1. **接口设计**:定义HTTP接口,如GET和POST,供前端或其他服务调用,请求生成特定条件的排列组合。 2. **业务逻辑层**:实现排列组合的生成算法...

    排列组合软件(任意字符、关键字全排,txt输出)

    在实际应用中,排列组合软件通常具备以下特点: 1. **输入灵活**:用户可以根据需求输入任意数量的字符或关键词。 2. **结果导出**:生成的排列组合列表可以导出为TXT等文本格式,方便进一步处理和分析。 3. **...

    C#实现排列组合算法完整实例

    在实际应用中,我们可以根据需求选择合适的排列组合算法实现。例如,如果对性能有较高要求,可以考虑使用堆栈方法;而在简单示例或调试阶段,循环方法则更为直观。无论哪种实现方式,理解和掌握排列组合的基本概念...

    排列和组合概念和应用

    排列和组合是组合数学的基本概念,广泛应用于计算机科学,特别是在游戏开发中的...通过深入理解和应用这些策略,我们不仅能解决高考数学中的排列组合难题,也能在实际的编程问题中灵活运用,提高算法的效率和准确性。

    排列组合练习数据

    在实际应用中,排列组合问题往往涉及到实际场景,例如:安排比赛赛程、分配任务、解密密码等。解决这类问题通常需要以下步骤: 1. **明确问题**:确定是排列问题还是组合问题,是否考虑顺序。 2. **分析元素**:...

    基于c语言排列组合算法

    基于C语言排列组合算法 排列组合是计算机科学中一个重要的概念,它广泛应用于数学、统计学、计算机科学等领域。...这些算法都可以高效地生成所有可能的排列,但是在实际应用中需要根据具体情况选择合适的算法。

    PHP实现多种类型的排列组合算法

    在实际应用中,排列和组合算法广泛应用于数据分析、密码学、图论问题、搜索引擎的搜索算法等。理解并熟练运用这些算法可以帮助我们解决复杂的问题,例如找出最佳路径、推荐系统或者优化资源分配。 总的来说,PHP...

    概率排列组合全章教案

    概率排列组合是数学中的一个重要分支,它在统计学、计算机科学、信息论、经济学等多个领域都有广泛应用。本章教案旨在全面讲解概率排列组合的基本概念、公式及其应用,帮助学习者深入理解和掌握这一理论。 首先,...

    计算数字排列组合,任意数字的组合。

    在IT领域,排列组合是一种基本的数学概念,与算法和数据结构密切相关,广泛应用于软件开发、数据分析、游戏设计等多个方面。本话题将深入探讨“计算数字排列组合,任意数字的组合”的相关知识点。 首先,我们需要...

    排列组合有重复

    排列组合有重复 本资源主要讨论排列组合问题,...* 排列组合问题的实际应用 本资源的内容丰富、详细,涵盖了排列组合问题的定义、回溯算法的应用、实验设计和实现、实验结果和分析等方面的内容,供读者学习和参考。

    易语言数字排列组合源码

    排列组合是组合数学中的基本概念,广泛应用于各种算法设计和数据分析中。 排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的方法数,记为P(n,m)。组合则是指从n个不同元素中不考虑顺序取出m个...

    高中数学讲义微专题80 排列组合中的常见模型.pdf

    综合这些知识,高中数学排列组合的微专题80,让学生通过这些模型和方法,更好地理解排列组合问题的本质,并在实际问题中灵活运用,提高解决问题的能力。在实际教学中,教师可以利用这些知识点设计更多贴近生活、富有...

    Java排列组合算法分析和代码实现

    在编程领域,排列组合是算法设计中的重要组成部分,特别是在数据结构和算法的课程中,以及在解决实际问题如路径搜索、图论问题等时经常用到。本资源深入讲解了如何在Java中实现这两种基本算法。 首先,让我们来理解...

    java排列组合算法

    在Java中实现排列组合算法可以帮助我们解决很多实际问题,比如数据排序、数据筛选等。下面将详细介绍排列和组合的基本概念以及在Java中的实现方法。 **排列** 是指从n个不同元素中取出m(m≤n)个元素,按照一定的...

    排列组合算法

    实际应用中,排列组合算法广泛应用于各种场景,如密码生成、数据分析、游戏逻辑、机器学习模型的参数搜索等。例如,在设计一个密码生成器时,可以利用组合算法生成所有可能的字符组合,以确保密码的多样性。 总的来...

    从n个数组中取出所有排列组合(Java实现)

    在实际应用中,可能需要对结果进行优化,例如使用Set避免重复,或者使用Stream API来简化代码。此外,对于大数据量的输入,还需要考虑性能优化,如使用并行计算或记忆化搜索等技术。 总结来说,从n个数组中取出所有...

    C#排列组合类

    在编程领域,排列组合是算法中的一个重要概念,用于解决各种问题,如数据分析、...以上就是关于"C#排列组合类"的主要知识点,通过理解和掌握这些内容,开发者能够有效地在C#项目中实现排列组合功能,解决各种实际问题。

    排列组合生成算法

    排列组合生成算法是计算机科学中一个重要的概念,特别是在解决优化问题和数据分析时有着广泛应用。在C++编程语言中实现这样的算法,可以帮助我们有效地处理大量数据的排列和组合问题。下面将详细探讨排列组合生成...

Global site tag (gtag.js) - Google Analytics