1. 程式人生 > >騰訊筆試3

騰訊筆試3

fir ati system int() scan rgs ringbuf 喜歡 parseint

小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 }

騰訊筆試3