当前位置: 代码迷 >> J2SE >> 如何用穷举来做 一个关于兔子的古典题目~
  详细解决方案

如何用穷举来做 一个关于兔子的古典题目~

热度:25   发布时间:2016-04-24 13:03:39.0
怎么用穷举来做 一个关于兔子的古典题目~~~
有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少。 


------解决方案--------------------
别搞了,这倒霉的兔子,,,


Java code
public class Rabbit { 
public static void fun(int t) {
int r1 = 0, r2 = 2, i=0,temp = 0;
if (t < 1)
return;
while (i <t) {
System.out.println("第"+(i+1)+"月:");
System.out.println(r2);
temp = r1;
r1 = r2;
r2 = temp + r2;
i++;
}
}

public static void main(String[] args) {
System.out.println("兔子数目:");
fun(12);//参数代表第多少个月 这里是12个月
}
}


------解决方案--------------------
探讨
别搞了,这倒霉的兔子,,,



Java codepublic class Rabbit {
public static void fun(int t) {
int r1 = 0, r2 = 2, i=0,temp = 0;
if (t < 1)
return;
while (i<t) {
System.out.println("第"+(i+1)+"月:");
System.out.println(r2);
temp = r1;
r1 = r2;
r2 = temp + r2;
i++;


------解决方案--------------------
public class RabitCounter {
public static void main(String[] args){
int month=7;
int result=0;
int[] currArray={0,0,0};
int[] prevArray={1,1,2};
int end=0;
int pos=0;
if((month/3)*3<month){
end=month/3;
pos=month-((month/3)*3)-1;
}else{
end=month/3-1;
}
if(month<1){
result=0;
}else if(month<=2){
result=1;
}else if(month==3){
result=2;
}else{
for(int i=1;i<=end;i++){
currArray[0]=prevArray[2]+prevArray[0];
System.out.println(currArray[0]);
currArray[1]=currArray[0]+prevArray[1];
System.out.println(currArray[1]);
currArray[2]=currArray[1]+prevArray[2];
System.out.println(currArray[2]);
result=currArray[2];
prevArray=currArray;
System.out.println("=================="+i+"================");
}
result=currArray[pos];
}

System.out.println("到第"+month+"个月共"+result*2+"只兔子");
}
}
------解决方案--------------------
格式没弄好,改month就可以得到结果了.

Java code
public class RabitCounter {    public static void main(String[] args){        int month=7;        int result=0;        int[] currArray={0,0,0};        int[] prevArray={1,1,2};        int end=0;        int pos=0;        if((month/3)*3<month){            end=month/3;            pos=month-((month/3)*3)-1;        }else{            end=month/3-1;        }        if(month<1){            result=0;        }else if(month<=2){            result=1;        }else if(month==3){            result=2;        }else{            for(int i=1;i<=end;i++){                currArray[0]=prevArray[2]+prevArray[0];                System.out.println(currArray[0]);                currArray[1]=currArray[0]+prevArray[1];                System.out.println(currArray[1]);                currArray[2]=currArray[1]+prevArray[2];                System.out.println(currArray[2]);                result=currArray[2];                prevArray=currArray;                            System.out.println("=================="+i+"================");            }            result=currArray[pos];        }                System.out.println("到第"+month+"个月共"+result*2+"只兔子");    }}
  相关解决方案