小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 }
原文地址:https://www.cnblogs.com/ncznx/p/9690791.html
时间: 2024-10-16 15:46:07