java实现第七届蓝桥杯搭积木
JAVA 实现 蓝桥 第七届
2023-09-14 08:58:11 时间
搭积木
题目描述
小明最近喜欢搭数字积木,
一共有10块积木,每个积木上有一个数字,0~9。
搭积木规则:
每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。
最后搭成4层的金字塔形,必须用完所有的积木。
下面是两种合格的搭法:
0
1 2
3 4 5
6 7 8 9
0
3 1
7 5 2
9 8 6 4
请你计算这样的搭法一共有多少种?
请填表示总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
结果:768
public class Demo1 {
static int count=0;
public static void main(String[] args) {
int arr[]=new int[]{0,1,2,3,4,5,6,7,8,9};
dfs(arr,0,10);
System.out.println(count);
}
private static void dfs(int[] arr, int num, int k) {
// TODO Auto-generated method stub
if(num==k){
if(panDuan(arr)){
count++;
}
}
for(int i=num;i<arr.length;i++){
swap(arr,num,i);
dfs(arr,num+1,k);
swap(arr,num,i);
}
}
private static void swap(int[] arr, int num, int i) {
// TODO Auto-generated method stub
int temp=arr[num];
arr[num]=arr[i];
arr[i]=temp;
}
private static boolean panDuan(int[] arr) {
// TODO Auto-generated method stub
/* 0
2
4 5
7 8 9*/
if(arr[0]<arr[1]&&arr[0]<arr[2]){
if(arr[1]<arr[3]&&arr[1]<arr[4]){
if(arr[2]<arr[4]&&arr[2]<arr[5]){
if(arr[3]<arr[6]&&arr[3]<arr[7]){
if(arr[4]<arr[7]&&arr[4]<arr[8]){
if(arr[5]<arr[8]&&arr[5]<arr[9]){
return true;
}
}
}
}
}
}
return false;
}
}
相关文章
- Java实现 LeetCode 762 二进制表示中质数个计算置位(位运算+JDK的方法)
- Java实现算法竞赛入门经典例题-蚂蚁
- Java实现 蓝桥杯 算法提高 数组求和
- Java实现 LeetCode 74 搜索二维矩阵
- java实现 洛谷 P1540 机器
- java实现第五届蓝桥杯幂一矩阵
- java实现第九届蓝桥杯最大乘积
- java实现第四届蓝桥杯猜年龄
- java实现第五届蓝桥杯锦标赛
- Java实现第八届蓝桥杯取数位
- java实现第六届蓝桥杯隔行变色
- java实现第六届蓝桥杯打印大X
- Java实现第八届蓝桥杯最大公共子串
- java实现还款计算
- java实现哈密顿回路问题
- Java实现 蓝桥杯VIP 算法提高 超级玛丽
- Java实现 蓝桥杯VIP 算法训练 采油区域
- Java实现 蓝桥杯VIP 算法训练 入学考试
- Java实现 蓝桥杯VIP 基础练习 龟兔赛跑预测
- Java实现 蓝桥杯 算法提高 求arccos值
- Java实现 蓝桥杯 算法训练 前缀表达式
- (Java实现) 零件分组
- (Java实现) 洛谷 P1115 最大子段和
- Java控制台版五子棋的简单实现方法
- 基于JAVA实现的WEB端UI自动化 - WebDriver高级篇 - 代码检查点[验证点/断言]与图像检查点