zoukankan      html  css  js  c++  java
  • 腾讯笔试3

    小Q喜欢吃甜食,有一天他拿到了一个巧克力条,这个巧克力条由许多排在一行的巧克力球组成,有些球上有坚果,有些球上没有坚果。

    小Q想把这个巧克力条掰成很多块(每块包含至少一个巧克力球),每块的大小可以不一样,但是每块上有且只有一个坚果。

    小Q想知道有多少种方式在某两个相邻的巧克力球直径掰开但是另一种方式没有,那么这两种方式就是不同的。

    如果巧克力只包含一个坚果,那么显然只有一种方式,即不掰。

    输入:

    第一行数字N(1<=N<=100),表示巧克力球的个数;

    第二行N个整数,每两个整数之间一个空格隔开。每个整数为0或者1,1表示这个巧克力球有坚果,0表示没有。

    输出:方案数

    代码:

     1 import java.util.Scanner;
     2 
     3 public class Tengxun3qioakeli {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         // 小Q喜欢吃甜食,有一天他拿到了一个巧克力条,这个巧克力条由许多排在一行的巧克力球组成,有些球上有坚果,有些球上没有坚果。
     8         //
     9         // 小Q想把这个巧克力条掰成很多块(每块包含至少一个巧克力球),每块的大小可以不一样,但是每块上有且只有一个坚果。
    10         //
    11         // 小Q想知道有多少种方式在某两个相邻的巧克力球直径掰开但是另一种方式没有,那么这两种方式就是不同的。
    12         //
    13         // 如果巧克力只包含一个坚果,那么显然只有一种方式,即不掰。
    14         //
    15         // 输入:
    16         //
    17         // 第一行数字N(1<=N<=100),表示巧克力球的个数;
    18         //
    19         // 第二行N个整数,每两个整数之间一个空格隔开。每个整数为0或者1,1表示这个巧克力球有坚果,0表示没有。
    20         //
    21         // 输出:方案数
    22         Scanner sc = new Scanner(System.in);
    23         int n = sc.nextInt();
    24         Scanner pc = new Scanner(System.in);
    25         String s = pc.nextLine();
    26         // String p="1 0 1 1";
    27         String[] sarr = s.split(" ");
    28         int[] arr = new int[sarr.length];
    29         for (int i = 0; i < sarr.length; i++) {
    30             // System.out.println(sarr[i]);
    31             arr[i] = Integer.parseInt(sarr[i]);
    32 
    33         }
    34         System.out.println(qiaoKeLi(sarr));
    35         sc.close();
    36         pc.close();
    37 
    38     }
    39 
    40     public static int qiaoKeLi(String[] sarr) {
    41         int n = sarr.length;
    42         int max = 1;
    43         // int len=0;
    44         StringBuffer sBuffer = new StringBuffer();
    45         for (String k : sarr)
    46             sBuffer.append(k);
    47         String s = sBuffer.toString();
    48 
    49         int first = 0;
    50         int last = 0;
    51         for (int i = 0; i < n; i++) {
    52             first = s.indexOf("1", i);
    53             last = s.indexOf("1", first + 1);
    54             if (last == -1)
    55                 break;
    56             // len=last-first;
    57             max *= last - first;
    58             i = first;
    59         }
    60         return max;
    61     }
    62 
    63 }
  • 相关阅读:
    CMDB-实例
    linux ( crontab 定时任务命令)
    2014编程之美初赛第一场题解
    单机与分布式OpenVAS在BackTrack上的配置(实验报告)
    Hadoop 2.2.0 在Red Hat Enterprise Linux 6.1 上的分布式配置(VMware虚拟机,1个namenode,2个datanode)
    Red Hat Enterprise Linux 6.1 的 JDK 1.7 安装
    TopCoder SRM 606 Div2 题解
    HDU 1561 The more, The Better (树形DP)
    HDU 2196 Computer (树形DP)
    HDU 1520 Anniversary party (树形DP)
  • 原文地址:https://www.cnblogs.com/ncznx/p/9690791.html
Copyright © 2011-2022 走看看