机器人塔

X星球的机器人表演拉拉队有两种服装,A和B。
他们这次表演的是搭机器人塔。

类似:

A
B B
A B A
A A B B
B B B A B
A B A B B A

队内的组塔规则是:

A 只能站在 AA 或 BB 的肩上。
B 只能站在 AB 或 BA 的肩上。

你的任务是帮助拉拉队计算一下,在给定A与B的人数时,可以组成多少种花样的塔。

输入一行两个整数 M 和 N,空格分开(0<M,N<500),分别表示A、B的人数,保证人数合理性。

要求输出一个整数,表示可以产生的花样种数。

例如:
用户输入:
1 2

程序应该输出:
3

再例如:
用户输入:
3 3

程序应该输出:
4

资源约定:
峰值内存消耗 < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。

先求出最后一行可能的情况,在一次往上推,符合条件就找到一种。

 1 import java.util.Arrays;
 2 import java.util.Scanner;
 3
 4
 5 public class Main{
 6     static int n;
 7     static int[] c;
 8     static int sum;
 9     public static void main(String[] args) {
10         Scanner input = new Scanner(System.in);
11         int a = input.nextInt();
12         int b = input.nextInt();
13         while(n+n*n!=2*(a+b)){
14             n++;
15         }
16         c = new int[n];
17         f(a,b,0);
18         System.out.println(sum);
19     }
20     public static void f(int a,int b,int h){
21         if(h>=n){
22             f1(a,b,h-1,c);
23             return;
24         }
25         if(a>0){
26             c[h] = 0;
27             f(a-1,b,h+1);
28         }
29         if(b>0){
30             c[h] = 1;
31             f(a,b-1,h+1);
32         }
33     }
34     public static void f1(int a,int b,int h,int[] d){
35         if(a<0||b<0){
36             return;
37         }
38         if(h==0&&a==0&&b==0){
39             sum++;
40             return;
41         }
42         int[] temp = new int[h];
43         for(int i=0;i<h;i++){
44             if(d[i]==d[i+1]){
45                 temp[i] = 0;
46                 a--;
47             }else{
48                 temp[i] = 1;
49                 b--;
50             }
51         }
52         f1(a,b,h-1,temp);
53     }
54
55 }
时间: 2024-10-26 18:22:16

机器人塔的相关文章

算法笔记_211:第七届蓝桥杯软件类决赛部分真题(Java语言A组)

目录 1 阶乘位数 2 凑平方数 3 棋子换位 4 机器人塔 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 阶乘位数 阶乘位数 9的阶乘等于:362880 它的二进制表示为:1011000100110000000 这个数字共有19位. 请你计算,9999 的阶乘的二进制表示一共有多少位? 注意:需要提交的是一个整数,不要填写任何无关内容(比如说明解释等) 答案:118445 1 import java.math.BigInteger; 2 3 public class Main { 4 5

读《人工智能狂潮——机器人会超越人类吗?》笔记

松尾丰,作者简介:东京大学院工学系研究科副教授,1997年毕业于东京大学工学部电子信息工学科.2002年完成了该大学的博士课程,成为工程博士.同年任产业技术综合研究所研究员.2005年起任斯坦福大学客座研究员.2007起至今任工学系研究科副教授,兼任新加坡国立大学客座副教授.专业领域为人工智能.网络信息挖掘.大数据分析.日本人工智能专家之一,曾获人工智能学会颁发"论文奖"(2002年)."创立20周年纪念事业奖"(2006年)."现场创新奖"(2

防抖节流——从爱抖腿的机器人说起

话说印度研发了最新款的智能机器人,代号"七弟",用于执行特殊任务. 由于开发者的大意疏忽,七弟的内核程序中存在一个隐晦的bug:当周围播放电子音乐时,电子音乐中强烈且带节奏的声波会影响七弟周围的空气密度,进而干扰里面电子元件的电容电压值,当电容释放时会执行一段固定的步行程序.但是电音中的节拍时长限制导致步行程序只能执行一半就被回退至起始状态.由于难以修复,开发者便称之为关节机械部位强化训练功能,又称"抖腿" 防抖之路 七弟的内核关键代码已经超过8千万行,其中某些模块

这是一款借助chrome 插件的微信机器人

1.chrome kit微信机器人简介(github:https://github.com/LinuxForYQH/chrome_kit) 借助chrome 插件 js注入来实现消息的发送 chrome devtool api的调用来监听https请求 打开微信登录界面,在扫码登录前必须先打开toolbar(F12 或者 鼠标右键检查),如上所说因为借助了chrome devtool api所以需要打开toolbar才能执行相关dev域的js. 2.相关开发原理介绍 https://develo

hdu 1207 汉诺塔II (DP+递推)

汉诺塔II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4529    Accepted Submission(s): 2231 Problem Description 经典的汉诺塔问题经常作为一个递归的经典例题存在.可能有人并不知道汉诺塔问题的典故.汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往

机器人--推荐系统(1)

430的目标是完成机器人的推荐系统,提高机器人回答问题的准确率,关于过程碰到的问题以及解决方案与大家分享一下,(请轻喷!) 那么这个推荐系统到底应该怎么做呢? 最开始的第一个思路是 根据用户 进入到ERP的模块 推荐该模块下的相关问题.其实就是根据用户的轨迹来推荐问题,这是一个思路但是不太完整.因为很有可能用户就从ERP的桌面就进入了机器人,但他实际要咨询的是销售系统的相关知识,那么此时的推荐就不太满足用户的咨询需求. 因此参考一些业界其他公司的做法,可以基于内容的协同过滤(Collaborat

北塔网管软件BTSO2.5安装过程记录

北塔网管软件据说是同类比较好的,原来的BTIM系列好像停止更新了,用BTSO版本代替,叫智慧运维平台,据说有各种改进,先把安装过程记录下来,以备以后重装. BTSO分两个部分:平台服务器和注册服务器,可以安装到一台主机,也可以分开,他们要能够通讯,否则认为盗版,注册要记录系统环境.要识别原版光盘,反正国产的软件版权意识近乎变态. 说明上要求win2008r2ent中文版或者win2012企业中文版,先试了2012,注册菜单不出现,重新用2008安装.顺序如下: 1.安装BETA-BTSO_2.5

从汉诺塔问题来看“递归”本质

汉诺塔问题 大二上数据结构课,老师在讲解"栈与递归的实现"时,引入了汉诺塔的问题,使用递归来解决n个盘在(x,y,z)轴上移动. 例如下面的动图(图片出自于汉诺塔算法详解之C++): 三个盘的情况: 四个盘的情况: 如果是5个.6个.7个....,该如何移动呢? 于是,老师给了一段经典的递归代码: void hanoi(int n,char x,char y,char z){ if(n == 1) move(x,1,z); else{ hanoi(n-1,x,z,y); move(x,

ROS turtlebot_follower :让机器人跟随我们移动

ROS turtlebot_follower 学习 首先在catkin_ws/src目录下载源码,地址:https://github.com/turtlebot/turtlebot_apps.git 了解代码见注释(其中有些地方我也不是很明白) follower.cpp #include <ros/ros.h> #include <pluginlib/class_list_macros.h> #include <nodelet/nodelet.h> #include &