【题目】

小明最近喜欢搭数字积木,

一共有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搭积木游戏相关推荐

  1. 贪吃蛇java设计代码下载_java贪吃蛇游戏源代码

    [实例简介] [实例截图] [核心代码] package cn.itcast.snake; import java.awt.event.KeyEvent; import java.awt.event. ...

  2. java与3d建模_java和3d游戏建模哪个?有没有3d建模转java或java转3的建模大佬给我指点一下...

    大三了,对于以后就业,学习方向有点迷茫,有没有3d建模转java或java转3的建模大佬给我指点一下,非常感谢.计算机专业的,学校主学的java,由于前几年没好好学,现在什么都不会,现在知道学习了,暑 ...

  3. java扫雷源代码思路_java实现扫雷游戏

    初学Java,写了一个扫雷代码来锻炼一下自己的代码能力. 一.代码思路 代码思路很重要,如果事先就想好了代码思路,那么写这一个代码肯定是事半功倍,比在哪里瞎打要强不知道多少. 经过思考,觉得可以创建一 ...

  4. java实现智能拼图_JAVA实现拼图游戏

    效果图如下: 源码如下: package org.test; /** * Title: LoonFramework * Description:拼图图像处理[未优化] * Copyright: Cop ...

  5. java版扫雷下载_Java 实现扫雷游戏(MineSweeper)

    package com.kerence.mine.data_structure; /** * 雷块类的属性和操作 * * @download:http://www.codefans.net * @au ...

  6. 蓝桥杯真题 搭积木 小明最近喜欢搭数字积木。一共有10块积木,每个积木上有一个数字,0~9。 搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。 最后搭成4层的金字塔形

    问题描述 小明最近喜欢搭数字积木.一共有10块积木,每个积木上有一个数字,0~9. 搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小. 最后搭成4层的金字塔形,必须用完所有 ...

  7. 蓝桥杯真题 16省Ja3-搭积木(小明最近喜欢搭数字积木, 一共有10块积木,每个积木上有一个数字,0~9。...)搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。 最

    题目描述 小明最近喜欢搭数字积木, 一共有10块积木,每个积木上有一个数字,0~9. 搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小. 最后搭成4层的金字塔形,必须用完所 ...

  8. 华为云“828 B2B企业节”,积木易搭云速3D云展与您不见不散

    由华为云与生态伙伴联合发起的首届"828 B2B企业节"将于8月28日正式开启.作为华为云云商店3D数字化技术服务领域的生态合作伙伴,积木易搭携手华为云打造的3D数字化营销展示服务 ...

  9. java计算机毕业设计个性化穿搭推荐系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计个性化穿搭推荐系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计个性化穿搭推荐系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构 ...

  10. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

最新文章

  1. 2016年大数据Spark“蘑菇云”行动代码学习之AdClickedStreamingStats模块分析
  2. python编程 pdf-Python书单推荐一波【内含PDF下载地址】
  3. 2021HDU多校6 - 7028 Decomposition(构造)
  4. python计算圆周率_Python实现计算圆周率π的值到任意位的方法示例
  5. Qwt--散点图/函数图
  6. oracle两个表合并 sql,如何创建从两个表(Oracle DBMS)生成“合并”数据集的Select SQL语句?...
  7. 开源运维管理软件排名_车主无忧:为什么放弃开源Kafka?
  8. java 获取apk的包名_java从apk文件里获取包名、版本号
  9. 2.替换空格JAVA
  10. java 基础 —— 文件操作(File)
  11. 安装floodlight遇到的问题和解决
  12. MATLAB music分解信号,MUSIC算法信号频率问题求解
  13. krc2lrc(krc酷狗歌词转lrc)工具更新- 1.2 增加添加/拖放目录功能
  14. 约瑟夫环 java_约瑟夫环的java实现
  15. linux io page fault,Linux的page fault
  16. shell foreach
  17. 使用 Ruby 开发代码生成器
  18. 15.6课后习题(Java Web程序设计)
  19. warframe怒焚者结合目标_warframe哪些地图有结合目标 | 手游网游页游攻略大全
  20. APP漏洞导致移动支付隐患重重,未来之路如何走?

热门文章

  1. 注册表编辑已被管理员禁用—解决办法
  2. Android吉他调音器,吉他调音器:GuitarTuna
  3. 001Diamond学习001概述
  4. 疫情期间华为面试总结
  5. zui php,ZUI前端html5框架 php版 v1.9.1
  6. Silverlight新型的富媒体
  7. 发送邮件到腾讯企业邮箱
  8. 计算机桌面图标底部蓝色咋办,电脑桌面的图标底下的文字被蓝色覆盖了怎么处理...
  9. 真彩色图像RGB,YIQ图像,HSV图像,YCbCr图像的相互转换(Matlab实现)
  10. 压力测试~一套完整的压力测试项目文档