日期:2014-05-20  浏览次数:20612 次

怎么用穷举来做 一个关于兔子的古典题目~~~
有一对兔子,从出生后第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+"只兔子");
    }
}