zoukankan      html  css  js  c++  java
  • 机器人塔

    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 }
  • 相关阅读:
    linux 如何使用密钥登录 (CentOs)
    linux修改ssh端口 以及禁止root远程登录 (实验机 CentOs)
    查看Windows端口及端口关闭方法
    使用 Linux 终端 SSH 登录 VPS
    修改Chrome默认搜索引擎为Google.com
    Windows 小技巧: 變更輸入法順序
    CentOS 安装BitTorrent Sync详细步骤
    Android手机部分名词浅谈
    PPTP模式跟L2TP模式有什么不同
    .CO域名快被这帮搞IT的玩坏了……
  • 原文地址:https://www.cnblogs.com/lolybj/p/6883962.html
Copyright © 2011-2022 走看看