A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雨山 中级黑马   /  2015-11-5 00:41  /  581 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【如有问题请指教】
假设一个羊群里面有一只羊,羊每年会生一只小羊(没有公母区别),但是一只羊只能活7年,第八年就死掉了,请问20年后羊圈里有多少只羊?
  1. package com.heima.test;

  2. public class YangHui {

  3.         /**
  4.          * 分析:第一年羊数为1(其实第一年应该两个)
  5.          * 第二年羊数为2,第三年羊数为4,以此类推第七年羊数为64,当第八年第一年的羊死了
  6.          * 第九年第二年的羊死了,以此类推
  7.          * 可以建立杨辉三角模型:
  8.          * 1年                                          1
  9.          * 2年                                       1 1
  10.          * 3年                                    1 2 1
  11.          * 4年                                1 3 3 1
  12.          * 5年                             1 4 6 4 1
  13.          * .              .
  14.          * .              .                                               
  15.          * .              .                           -            每年死的羊数
  16.          * 8年                                           .            -          1     *1 = 1
  17.          * 9年                                           .            -         1 1        *2 = 1 * 2 + 2
  18.          * 10年                                        .            -        1 2 1        *3 = 4 * 2 + 4
  19.          * 11年                          .            -       1 3 3 1  *4 = 12 * 2 + 8
  20.          * 思路:1,建立杨辉三角,返回第N年的羊数
  21.          * 2,用第20年的羊数减去13年的羊数*13
  22.          */
  23.         public static void main(String[] args) {
  24.                 int sheep = yangHui(2);
  25.                 System.out.println(sheep);
  26.         }
  27.        
  28.         //方法功能  产生杨辉三角 返回实际第year年的羊数
  29.     //返回值类型  int
  30.         //参数列表  int year
  31.         public static int yangHui(int year) {
  32.                 int[][] arr = new int[year + 1][year + 1];
  33.                 for (int i = 0; i < year + 1; i++) {
  34.                         arr[i][0] = 1;
  35.                         arr[i][i] = 1;
  36.                 }
  37.                
  38.                 for (int i = 2; i < arr.length; i++) {
  39.                         for (int j = 1; j < i; j++) {
  40.                                 arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
  41.                         }
  42.                 }
  43.                
  44.                 printArray(arr);
  45.                 int temp = sheep(arr,year);                        //计算第year年的羊数
  46.                 if(year < 8) {
  47.                         return temp;
  48.                 }else {
  49.                         int temp1 = sheep(arr,year - 7) * (year - 7);
  50.                         return temp - temp1;
  51.                 }

  52.         }
  53.        
  54.         //方法功能  返回第year年羊数
  55.         //返回值类型 int
  56.         //参数列表 int[] arr,year
  57.         public static int sheep(int[][] arr,int year) {
  58.                 int sum = 0;
  59.                 for (int i = 0; i < arr[year].length; i++) {
  60.                         sum = sum + arr[year][i];
  61.                 }
  62.                 return sum;
  63.         }
  64.        
  65.         //方法功能  遍历数组
  66.         //返回值类型  void
  67.         //参数列表 int[] arr
  68.         public static void printArray(int[][] arr) {
  69.                 for (int i = 0; i < arr.length; i++) {
  70.                         for (int j = 0; j < arr[i].length; j++) {
  71.                                 System.out.print(arr[i][j] + " ");
  72.                         }
  73.                         System.out.println();
  74.                 }
  75.         }
  76. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马