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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田磊阳   /  2013-4-9 23:38  /  14759 人查看  /  200 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

通行天下 来自手机 中级黑马 2013-4-9 23:57:28
楼主
必须顶啊!
回复 使用道具 举报
  1. import java.util.Scanner;
  2. class TestSum
  3. {
  4.         public static void main(String[] args)
  5.         {   
  6.                 Scanner in = new Scanner(System.in);

  7.                 //向系统中输入任意一个年数,并赋值给变量n
  8.                 System.out.println("请输入一个年数:");
  9.                 int n = in.nextInt();

  10.                 //打印输入的年数所对应的牛的总头数
  11.                 System.out.println("到第"+n+"年,总共有牛"+getSum(n)+"头");
  12.         }

  13.         //此方法用来计算所输入年数的总的牛头数
  14.         public static int getSum(int year)
  15.         {
  16.                 //当输入的年数小于零时,返回-1,表示输入有误。
  17.                 if(year<0)
  18.                 {
  19.                         System.out.println("输入的数据不符合要求!");
  20.                         return -1;
  21.                 }

  22.                 //当输入的年数小于或者等于3时,返回1.因为又题意可知,三年以后,才会有新的牛出生;因此,此时牛的总头数为1.
  23.                 else if(year<=3)
  24.                         return 1;
  25.                 //下面是年数大于3的情况
  26.                 else
  27.                 {
  28.                         //最开始时,有一头牛,所以总数sum初始化为1
  29.                         int sum = 1;

  30.                         //定义一个数组来存放每一年新出生的牛,因为从第四年开始才有新牛出生,所以此数组中存储的第一个元素是从第四年开始的,
  31.                         //也即数组的长度为year-3(因为数组角标是从0开始的)。
  32.                         int[] arr = new int[year-3];
  33.                         for(int i=0;i<arr.length;i++)
  34.                         {
  35.                                 //因为是每一头牛都在三年后生产一头小牛,并且以后此牛会每一年生一头小牛;故从第四年起,
  36.                                 //每一年出生的小牛数都等于上一年出生的小牛数加上三年前的那一年出生的小牛数
  37.                                 //(如:第七年出生的小牛数=第六年出生的小牛数+第四年出生的小牛数).这一步很关键!!!
  38.                                 if(i>=3)
  39.                                         arr[i] = arr[i-1]+ arr[i-3];

  40.                                 //当年数为4、5、6时,每年只有一头牛出生
  41.                                 else
  42.                                         arr[i]= 1;
  43.                                 //将每一年的牛数叠加起来
  44.                                 sum += arr[i];

  45.                         }
  46.                
  47.                         //返回输入年数所对应的总牛数
  48.                         return sum;
  49.                 }
  50.         }
  51. }
复制代码
请问一下,我写的这个对吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马