`

1,2,2,3,4,5这六个数按条件排列组合的个数有多少问题求解算法

    博客分类:
  • java
阅读更多
//1,2,2,3,4,5这六个数按条件排列组合的个数有多少问题求解算法
//条件为 两个2不能够挨着,3不能位于第三位! 
public class loop2 {
	private static boolean judge(char[] arr){  //判断这个数组中是不是含有两个2和1,3,4,5这四个数各一个
        int n1=0,n2=0,n3=0,n4=0,n5=0; 
        for(int j=0;j<arr.length;j++){ 
            if(arr[j]=='1')
                n1++; 
            if(arr[j]=='2')
                n2++; 
            if(arr[j]=='3')
                n3++; 
            if(arr[j]=='4')
                n4++; 
            if(arr[j]=='5')
                n5++; 
        } 
        return n1==1 && n2==2 && n3==1 && n4==1 && n5==1; 
    } 
	
	public static void main(String args[]){
		String str ;
		int ii=0,i2;
		for(int i=122345;i<=543221;i++){  //从组合的最小到最大
			str = "";
			str = str+i;
			char c [] = str.toCharArray(); //把数转化为数组
			if(judge(c)){                //调用判断函数
				if(c[2]!='3'){            //判断数是否满足条件
					if((str.charAt(0)=='2'&&str.charAt(1)!='2')||(str.charAt(5)=='2'&&str.charAt(4)!='2')){ //判断数是否满足条件(2在第一位或者最后一位的情况) 
						System.out.println(++ii+":"+str);  //满足条件输出
					}else if(0<=(i2=str.lastIndexOf('2')) && (str.charAt(i2-1)!='2')){//判断数是否满足条件(2不在第一位或者最后一位的情况)
						System.out.println(++ii+":"+str); //满足条件输出
					}
				}
			}
		}
	}
}
分享到:
评论

相关推荐

    C++数学与算法系列之排列和组合

    则第 1 个数字有 5 种选择,第 2 个数字有 4 种选择,第 3 个数字有 3 种选择,第 4 个数字有 2 种选择,最终可选择的个数为 5*4*3*2=120,和前面相比较,即为 5 的阶乘除以 1 的阶乘。 如果不是选择 4 个数字,...

    【TSP问题】基于改进遗传算法求解旅行商问题matlab源码.pdf

    遗传算法是解决TSP问题的有效方法,通过对访问城市序列进行排列组合的方法编码,保证每个城市经过且只经过一次。下面是基于改进遗传算法求解旅行商问题matlab源码的知识点总结: 1. 遗传算法介绍 遗传算法是一种...

    A*算法解决八数码问题(C++)

    八数码问题,又称滑动拼图游戏,是一个经典的计算机科学问题,玩家需要通过移动空格来重新排列一组数字,使得它们最终形成一个预设的目标序列。在这个过程中,A*算法可以找到达到目标状态的最短路径。 A*算法的核心...

    A*算法实现15数码问题

    这个挑战是将一个打乱顺序的15个数字的2x3矩阵,通过空格移动,最终排列成1到15的升序序列。 首先,我们需要理解A*算法的基本原理。A*算法结合了Dijkstra算法的最短路径搜索和Greedy最佳优先搜索的优点,通过一个...

    N后问题 搜索排列树算法

    得用搜索排列树算法求出N后问题的解的个数,如在input.txt中输入4,则程序运行后会在output.txt中输出答案92

    算法设计——N后问题的回溯解法

    这是因为最坏情况下需要检查所有可能的排列组合。 2. **空间复杂度分析**:空间复杂度主要由递归调用栈占用的空间决定,通常为 O(N)。 3. **优化策略**: - 使用位运算来加速冲突检测。 - 采用剪枝技术减少无效...

    一百个经典算法,C语言编写

    5. 阶乘尾数零的个数:探究一个整数的阶乘末尾有多少个零,与因数5和2的数量有关。 6. 借书方案知多少:可能是一个组合优化问题,例如背包问题的变种,寻找不同组合的可能性。 7. 杨辉三角形:生成和操作杨辉...

    有重复元素的排列问题

    本问题属于排列组合的一个变种,即求解包含重复元素的集合的所有不同排列。通常情况下,对于不含重复元素的n个元素,其排列数量为n!(n的阶乘)。然而,在存在重复元素的情况下,直接使用递归或回溯的方法会产生重复...

    al.rar_al算法程序

    2. 斐波那契数列:这是一个典型的递归序列,定义为F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2) (n&gt;=2),在算法设计中常用于分析递归结构和优化算法效率。 3. 容斥原理:在计算多个集合的并集中元素的个数时,为了避免重复...

    ACM编程题模板和各种经典算法数据结构实现代码

    ### ACM编程题模板和各种经典算法数据结构实现代码解析 #### 概述 这份文档源自吉林大学ACM/ICPC团队,旨在为学习ACM竞赛的学生提供一系列算法和数据结构的实现代码。...23. **递归方法求解排列组合问题**...

    JAVA算法40 题练习

    12. 数字排列:数字排列是指有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数? 13. 奖金计算:奖金计算是指根据利润提成,计算应发放奖金总数。 14. 完全平方数判断:完全平方数是指一个整数,它...

    C语言趣味算法

    6. 杨辉三角形:一个经典的数字排列图形,通过递归或者迭代算法生成,是组合数学中的一个重要概念。 7. 数制转换:算法可以实现不同数制之间的相互转换,如二进制、八进制、十六进制与十进制之间的转换。 8. 打鱼...

    算法案例同步练习苏教版必修32精选.doc

    - 将二进制数101111011转化为十进制数:通过权重相加得到,1×2^8 + 0×2^7 + 1×2^6 + 1×2^5 + 1×2^4 + 1×2^3 + 0×2^2 + 1×2^1 + 1 = 379。 - 将八进制数53转化为二进制数:5×8^1 + 3 = 43,所以53(8)= ...

    程序设计竞赛——组合数学新PPT学习教案.pptx

    【组合数学】是程序设计竞赛中的重要组成部分,它涉及到如何有效地计算特定情况下的组合数、排列数以及解决基于计数的复杂问题。在程序设计竞赛中,掌握组合数学可以帮助参赛者快速准确地解决各种计数类题目。 1. *...

    数据结构与算法课设题目一 (2).docx

    5. **计算1的个数问题**:这是一个位操作的问题,可以通过二进制转换和位运算(如按位与、按位异或等)来统计1的个数。 6. **排序重构问题**:这个问题涉及两个部分:构造D数组和根据D重构A。可以使用数组操作,...

    1 程序设计与算法集.docx

    3. **n 级台阶问题**:这个问题可能涉及到动态规划,一个经典的例子是“青蛙跳台阶”,青蛙每次可以跳1步或2步,目标是找到到达n级台阶的所有可能方式。 4. **单位分数求解**:这可能涉及到分数的数学运算,如加减...

    组合数学第五版课后答案(后缀丢失,下载自行添加 .rar 解压)

    3. **鸽巢原理**:这是组合数学中的一个基础原理,用于解决分配问题。如果n个物品放入m个容器(n &gt; m),至少有一个容器包含多于一个物品。这个原理在证明不等式和设计算法时经常用到。 4. **容斥原理**:用于计算...

Global site tag (gtag.js) - Google Analytics