//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); //满足条件输出
}
}
}
}
}
}
分享到:
相关推荐
则第 1 个数字有 5 种选择,第 2 个数字有 4 种选择,第 3 个数字有 3 种选择,第 4 个数字有 2 种选择,最终可选择的个数为 5*4*3*2=120,和前面相比较,即为 5 的阶乘除以 1 的阶乘。 如果不是选择 4 个数字,...
遗传算法是解决TSP问题的有效方法,通过对访问城市序列进行排列组合的方法编码,保证每个城市经过且只经过一次。下面是基于改进遗传算法求解旅行商问题matlab源码的知识点总结: 1. 遗传算法介绍 遗传算法是一种...
八数码问题,又称滑动拼图游戏,是一个经典的计算机科学问题,玩家需要通过移动空格来重新排列一组数字,使得它们最终形成一个预设的目标序列。在这个过程中,A*算法可以找到达到目标状态的最短路径。 A*算法的核心...
这个挑战是将一个打乱顺序的15个数字的2x3矩阵,通过空格移动,最终排列成1到15的升序序列。 首先,我们需要理解A*算法的基本原理。A*算法结合了Dijkstra算法的最短路径搜索和Greedy最佳优先搜索的优点,通过一个...
得用搜索排列树算法求出N后问题的解的个数,如在input.txt中输入4,则程序运行后会在output.txt中输出答案92
这是因为最坏情况下需要检查所有可能的排列组合。 2. **空间复杂度分析**:空间复杂度主要由递归调用栈占用的空间决定,通常为 O(N)。 3. **优化策略**: - 使用位运算来加速冲突检测。 - 采用剪枝技术减少无效...
5. 阶乘尾数零的个数:探究一个整数的阶乘末尾有多少个零,与因数5和2的数量有关。 6. 借书方案知多少:可能是一个组合优化问题,例如背包问题的变种,寻找不同组合的可能性。 7. 杨辉三角形:生成和操作杨辉...
本问题属于排列组合的一个变种,即求解包含重复元素的集合的所有不同排列。通常情况下,对于不含重复元素的n个元素,其排列数量为n!(n的阶乘)。然而,在存在重复元素的情况下,直接使用递归或回溯的方法会产生重复...
2. 斐波那契数列:这是一个典型的递归序列,定义为F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2) (n>=2),在算法设计中常用于分析递归结构和优化算法效率。 3. 容斥原理:在计算多个集合的并集中元素的个数时,为了避免重复...
### 趣味算法知识点概览 #### 1. 绘制余弦曲线 - **知识点**:使用C/C++语言中的图形库(如graphics.h)来绘制数学函数图像。... 和数能表示1~23的5个正整数 - **知识点**:数字处理、条件判断。 - *...
### ACM编程题模板和各种经典算法数据结构实现代码解析 #### 概述 这份文档源自吉林大学ACM/ICPC团队,旨在为学习ACM竞赛的学生提供一系列算法和数据结构的实现代码。...23. **递归方法求解排列组合问题**...
12. 数字排列:数字排列是指有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数? 13. 奖金计算:奖金计算是指根据利润提成,计算应发放奖金总数。 14. 完全平方数判断:完全平方数是指一个整数,它...
6. 杨辉三角形:一个经典的数字排列图形,通过递归或者迭代算法生成,是组合数学中的一个重要概念。 7. 数制转换:算法可以实现不同数制之间的相互转换,如二进制、八进制、十六进制与十进制之间的转换。 8. 打鱼...
- 将二进制数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)= ...
【组合数学】是程序设计竞赛中的重要组成部分,它涉及到如何有效地计算特定情况下的组合数、排列数以及解决基于计数的复杂问题。在程序设计竞赛中,掌握组合数学可以帮助参赛者快速准确地解决各种计数类题目。 1. *...
5. **计算1的个数问题**:这是一个位操作的问题,可以通过二进制转换和位运算(如按位与、按位异或等)来统计1的个数。 6. **排序重构问题**:这个问题涉及两个部分:构造D数组和根据D重构A。可以使用数组操作,...
3. **n 级台阶问题**:这个问题可能涉及到动态规划,一个经典的例子是“青蛙跳台阶”,青蛙每次可以跳1步或2步,目标是找到到达n级台阶的所有可能方式。 4. **单位分数求解**:这可能涉及到分数的数学运算,如加减...
3. **鸽巢原理**:这是组合数学中的一个基础原理,用于解决分配问题。如果n个物品放入m个容器(n > m),至少有一个容器包含多于一个物品。这个原理在证明不等式和设计算法时经常用到。 4. **容斥原理**:用于计算...