Java实现搭积木_Java搭积木游戏
【题目】
小明最近喜欢搭数字积木,
一共有10块积木,每个积木上有一个数字,0~9。
搭积木规则:
每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。
最后搭成4层的金字塔形,必须用完所有的积木
下面是两种合格的搭法:
0 0
1 2 3 1
3 4 5 7 5 2
6 7 8 9 9 8 6 4
请你计算这样的搭法一共有多少种?
【分析】
首先可以用一个一维数组来表示这个积木
{0,1,2,3,4,5,6,7,8,9},这样正好数组0下标是0,一一对照
然后需要两个方法:
runOne()方法:来为我们找出所有可能的情况
runTwo()方法:每找出一种可能,就调用该方法来判断是否符合搭积木条件
【代码演示】
public class Main {
// 静态数组
static int[] num = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
// 计数君
static int count = 0;
// 主方法在这
public static void main(String[] args) {
runOne(0);
System.out.println(count);
}
static void runOne(int n){
// n为置换到第几个积木了,到第9块积木才能判断
if (n==9){
runTwo();
}
for (int i=n;i<10;i++){
// 当程序第一次到这里的时候,这里把i下标与n下标调换位置还是不变的
// 这里的是给后面已经置换过位置的再次置换回来
int inputOne=num[i];num[i]=num[n];num[n]=inputOne;
runOne(n+1);
// 这里是当楼上方法执行完毕就会执行下标位置调换
int inputTwo=num[i];num[i]=num[n];num[n]=inputTwo;
}
}
static void runTwo(){
// 这里是只有当这些条件都满足就能count++,不然只能停止该方法
if (num[0]>num[1] || num[0]>num[2]) return;
if (num[1]>num[3] || num[1]>num[4]) return;
if (num[2]>num[4] || num[2]>num[5]) return;
if (num[3]>num[6] || num[3]>num[7]) return;
if (num[4]>num[7] || num[4]>num[8]) return;
if (num[5]>num[8] || num[5]>num[9]) return;
count++;
}
}
【再次分析】
方法runOne()中,有两次调换数组位置,中间夹了一个方法调用,第一次调换位置换不了首次进来的数组,是当runOne(n+1)执行完步后,这时i等于原来的n,n就等于n+1了,这时调换位置就生效了,生效之后当再次遇到第一次调换,就能换回上次的位置,再找一个别的可能的情况
【答案】:768
标签:runOne,return,游戏,积木,int,num,搭积木,static,Java
来源: https://blog.csdn.net/our1624204500/article/details/106809347
Java实现搭积木_Java搭积木游戏相关推荐
- 贪吃蛇java设计代码下载_java贪吃蛇游戏源代码
[实例简介] [实例截图] [核心代码] package cn.itcast.snake; import java.awt.event.KeyEvent; import java.awt.event. ...
- java与3d建模_java和3d游戏建模哪个?有没有3d建模转java或java转3的建模大佬给我指点一下...
大三了,对于以后就业,学习方向有点迷茫,有没有3d建模转java或java转3的建模大佬给我指点一下,非常感谢.计算机专业的,学校主学的java,由于前几年没好好学,现在什么都不会,现在知道学习了,暑 ...
- java扫雷源代码思路_java实现扫雷游戏
初学Java,写了一个扫雷代码来锻炼一下自己的代码能力. 一.代码思路 代码思路很重要,如果事先就想好了代码思路,那么写这一个代码肯定是事半功倍,比在哪里瞎打要强不知道多少. 经过思考,觉得可以创建一 ...
- java实现智能拼图_JAVA实现拼图游戏
效果图如下: 源码如下: package org.test; /** * Title: LoonFramework * Description:拼图图像处理[未优化] * Copyright: Cop ...
- java版扫雷下载_Java 实现扫雷游戏(MineSweeper)
package com.kerence.mine.data_structure; /** * 雷块类的属性和操作 * * @download:http://www.codefans.net * @au ...
- 蓝桥杯真题 搭积木 小明最近喜欢搭数字积木。一共有10块积木,每个积木上有一个数字,0~9。 搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。 最后搭成4层的金字塔形
问题描述 小明最近喜欢搭数字积木.一共有10块积木,每个积木上有一个数字,0~9. 搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小. 最后搭成4层的金字塔形,必须用完所有 ...
- 蓝桥杯真题 16省Ja3-搭积木(小明最近喜欢搭数字积木, 一共有10块积木,每个积木上有一个数字,0~9。...)搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。 最
题目描述 小明最近喜欢搭数字积木, 一共有10块积木,每个积木上有一个数字,0~9. 搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小. 最后搭成4层的金字塔形,必须用完所 ...
- 华为云“828 B2B企业节”,积木易搭云速3D云展与您不见不散
由华为云与生态伙伴联合发起的首届"828 B2B企业节"将于8月28日正式开启.作为华为云云商店3D数字化技术服务领域的生态合作伙伴,积木易搭携手华为云打造的3D数字化营销展示服务 ...
- java计算机毕业设计个性化穿搭推荐系统MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计个性化穿搭推荐系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计个性化穿搭推荐系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构 ...
- 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目
课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...
最新文章
- 2016年大数据Spark“蘑菇云”行动代码学习之AdClickedStreamingStats模块分析
- python编程 pdf-Python书单推荐一波【内含PDF下载地址】
- 2021HDU多校6 - 7028 Decomposition(构造)
- python计算圆周率_Python实现计算圆周率π的值到任意位的方法示例
- Qwt--散点图/函数图
- oracle两个表合并 sql,如何创建从两个表(Oracle DBMS)生成“合并”数据集的Select SQL语句?...
- 开源运维管理软件排名_车主无忧:为什么放弃开源Kafka?
- java 获取apk的包名_java从apk文件里获取包名、版本号
- 2.替换空格JAVA
- java 基础 —— 文件操作(File)
- 安装floodlight遇到的问题和解决
- MATLAB music分解信号,MUSIC算法信号频率问题求解
- krc2lrc(krc酷狗歌词转lrc)工具更新- 1.2 增加添加/拖放目录功能
- 约瑟夫环 java_约瑟夫环的java实现
- linux io page fault,Linux的page fault
- shell foreach
- 使用 Ruby 开发代码生成器
- 15.6课后习题(Java Web程序设计)
- warframe怒焚者结合目标_warframe哪些地图有结合目标 | 手游网游页游攻略大全
- APP漏洞导致移动支付隐患重重,未来之路如何走?
热门文章
- 注册表编辑已被管理员禁用—解决办法
- Android吉他调音器,吉他调音器:GuitarTuna
- 001Diamond学习001概述
- 疫情期间华为面试总结
- zui php,ZUI前端html5框架 php版 v1.9.1
- Silverlight新型的富媒体
- 发送邮件到腾讯企业邮箱
- 计算机桌面图标底部蓝色咋办,电脑桌面的图标底下的文字被蓝色覆盖了怎么处理...
- 真彩色图像RGB,YIQ图像,HSV图像,YCbCr图像的相互转换(Matlab实现)
- 压力测试~一套完整的压力测试项目文档