`
clarancepeng
  • 浏览: 191772 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

写一个算法--其实很简单

阅读更多

六个数 1,2,2,3,4,5
1,5不相邻
第四个不能是3
用算法表示出它的所有可能的排列组合

java 代码
  1. package test;   
  2.   
  3. public class NewCalc {   
  4.   
  5.     public NewCalc() {   
  6.         // TODO Auto-generated constructor stub   
  7.     }   
  8.   
  9.     /**  
  10.      * @param args  
  11.      */  
  12.     public static void main(String[] args) {   
  13.         // TODO Auto-generated method stub   
  14.         int[] initInt = {1,2,2,3,4,5};   
  15.         NewCalc nc = new NewCalc();   
  16.         nc.printData(initInt);   
  17.   
  18.     }   
  19.   
  20.     private void printData(int[] initInt)   
  21.     {   
  22.         int p0,p1,p2,p3,p4,p5;   
  23.         int count = 0;   
  24.   
  25.         for(int a=0;a<initInt.length;a++)   
  26.         {   
  27.             p0 = initInt[a];   
  28.             //System.out.println("p0 = " + p0);   
  29.             int initInt1[] = removeData(initInt, a);   
  30.             for(int b=0;b<initInt1.length;b++)   
  31.             {   
  32.                 p1 = initInt1[b];   
  33.                 if(p0*p1 == 5)   
  34.                     continue;   
  35.                 int[] initInt2 = removeData(initInt1, b);   
  36.   
  37.                 for(int c=0;c<initInt2.length;c++)   
  38.                 {   
  39.                     p2 = initInt2[c];   
  40.                     if(p1*p2 == 5)   
  41.                         continue;   
  42.                     int initInt3[] = removeData(initInt2, c);   
  43.                     for(int d=0;d<initInt3.length;d++)   
  44.                     {   
  45.                         p3 = initInt3[d];   
  46.                         if(p2*p3 == 5 || p3 == 3)   
  47.                             continue;   
  48.                         int initInt4[] = removeData(initInt3, d);   
  49.                         for(int e=0;e<initInt4.length;e++)   
  50.                         {   
  51.                             p4 = initInt4[e];   
  52.                             if(p3*p4 == 5)   
  53.                                 continue;   
  54.                             int initInt5[] = removeData(initInt4, e);   
  55.                             for(int f=0;f<initInt5.length;f++)   
  56.                             {   
  57.                                 p5 = initInt5[f];   
  58.                                 if(p4*p5 == 5)   
  59.                                     continue;   
  60.                                 System.out.println("" + p0 + "" + p1 + "" + p2 + "" + "" + p3 + "" + p4 + "" + p5);   
  61.                                 count++;   
  62.                                 //initInt = removeData(initInt, f);   
  63.                             }   
  64.                         }   
  65.                     }   
  66.                 }   
  67.             }   
  68.         }   
  69.         System.out.println("the quantity of these data is " + count);   
  70.     }   
  71.     private int[] removeData(int[] oldData, int i)   
  72.     {   
  73.         int j[] = new int[oldData.length -1];   
  74.         for(int k = 0,l = 0; k < oldData.length; k++)   
  75.         {   
  76.             if(i != k)   
  77.             {   
  78.                 j[l] = oldData[k];   
  79.                 l++;   
  80.             }   
  81.         }   
  82.         return j;   
  83.     }   
  84.   
  85. }   

 

分享到:
评论

相关推荐

    算法--必胜

    这其实是一个经典的数学问题,通常称为“博弈论”中的一个问题。博弈论研究的是在有限规则的互动决策环境中,如何选择最佳策略以达到最优结果。 在这个纸牌游戏中,有两个玩家参与,每人每次可以取一张或两张纸牌,...

    机器学习算法-基于机器学习回归算法实现的波士顿房屋租赁价格预测.zip

    首先,回归是通过建立一个数学模型,该模型能够描述输入特征(自变量)与输出目标(因变量)之间的关系。在本案例中,自变量可能包括房屋的大小、卧室数量、地理位置等因素,而因变量则是房屋的租金。 回归算法有很...

    写给大家看的算法书

    算法这个词对于非计算机从业人士而言,似乎就是晦涩、神秘的代名词。其实,算法在日常生活中随处可见。...通读全书,读者可以了解到计算机编程与算法的基本理念,也能对简单常用的算法有一个大概的理解。

    改进AC-BM算法实现原理

    AC算法主要用于处理多关键字的匹配问题,通过构建一个树状有限状态自动机来实现高效的匹配。而BM算法则是一种快速的单关键字匹配算法,利用坏字符跳转和好后缀跳转策略来减少不必要的比较次数。 **AC-BM算法的主要...

    子集和问题(算法设计,acm)

    给定的代码实现了一个简单的递归回溯算法来解决子集和问题。 1. **获取输入**: - 首先,用户输入一组整数的数量`len`。 - 接着,输入每个整数的值,并存储在一个动态分配的整型数组`data`中。 - 最后,用户输入...

    写给大家看的算法书 ,(日)杉浦贤著

    算法这个词对于非计算机从业人士而言,似乎就是晦涩、神秘的代名词。其实,算法在日常生活中随处可见。...通读全书,读者可以了解到计算机编程与算法的基本理念,也能对简单常用的算法有一个大概的理解。

    Unity-A星算法

    其实代码是次要的东西,要理解A星算法,建议先去看数学证明,否则看代码一点意义没有,因为看懂了证明,代码会变得非常简单。证明里有个核心点就是,评估函数值实际值,可以确保找到最短路径的证明,理解了这个证明...

    穷举算法 回溯算法 介绍

    穷举算法是最简单、最基础的算法之一,也是通常被认为非常没效率的算法。但是,穷举拥有很多优点,它在算法中占有一席之地。首先,穷举具有准确性,只要时间足够,正确的穷举得出的结论是绝对正确的;其次,穷举拥有...

    3月24日直播《一节课掌握机器学习经典算法-支持向量机》.pdf

    本篇文章将详细介绍支持向量机的基本概念、数学原理以及其实现过程,并通过一个具体的例子来展示其工作流程。 #### 二、基础知识回顾 1. **决策边界**:在分类问题中,决策边界是指能够将不同类别的样本正确分开的...

    K-means聚类算法

    假设数据集在一个mm维的欧式空间中,我们初始时,可随机选择kk个数据项作为这kk个簇的形心Ci,i∈{1,2,…k}Ci,i∈{1,2,…k},每个簇心代表的其实是一个簇,也就是一组数据项构成的集合。然后对所有的nn个数据项,计算...

    编译原理---算浮优先算法.rar_算符优先语法分析器_编译原理_编译原理 语法分析_语法分析器

    )总之,这个工程仅仅是一个简单示例,告诉大家怎么样把课堂上学到的知识运用到实际编程当中去,工程中所用到的模块化思想,数据结构等知识都是大家学过的,大三了,希望大家在最后这段时间里把写程序的本领练就出来...

    基于JavaScript实现进程调度算法模拟-源码

    总的来说,这个项目为学习和理解进程调度算法提供了一个实践平台。通过JavaScript的实现,我们可以更直观地看到不同调度策略对系统性能的影响,并且可以方便地调整参数,探索不同场景下的最优策略。对于想要深入学习...

    机器学习算法基础-逻辑回归

    它的基本思想是通过一个线性函数对数据进行预测,然后通过Sigmoid函数(或称为逻辑函数)将连续的预测值转化为0到1之间的概率值,以此来判断属于某一类别的概率。 Sigmoid函数的数学表达式为:f(x) = 1 / (1 + e^(-...

    copra_copra算法_模糊社区检测算法copra_

    在传统的社区检测算法中,每个节点通常被分配到一个社区,而在模糊社区检测中,节点可以同时属于多个社区,且对每个社区的隶属程度有明确的度量。这种灵活性使得Copra能够更好地反映现实世界中复杂的关系网络。 ...

    加密解密置换算法的实现

    本文介绍了一种基于置换算法的加密解密实现方案,并探讨了其实现细节。虽然置换算法因其简单的性质而在安全性方面存在局限性,但通过与其他加密技术的结合使用,依然能够在许多应用场景下发挥重要作用。未来的研究...

    KMP算法~~完整的

    它通过构建一个前缀表(通常称为next数组),记录模式串中每个前缀的最大相同后缀的长度,以此来决定在不匹配时模式串应该移动多少位,而不是简单地将其重置到起始位置。这种方法使得KMP算法即使在最坏情况下也能...

    粒子群算法PSO入门代码火经典案例求Ackley函数附-PSO.zip

    粒子群算法是生物学家研究鸟类捕食创造的,把一只鸟比作成一个粒子,设想一个有20只秃鹫(粒子)的群体吧,秃鹫相互独立具有个体特征但又相互协助体现群体特征,现在我就是这20只中的一只好了(人丑),我现在和小...

Global site tag (gtag.js) - Google Analytics