### 百钱买百鸡
#### 案列说明:主要内容是:公鸡5元一只,母鸡3元一只,小鸡1元三只,问100元怎样可以买100鸡?
思想:想要实现此算法,只要明白各种条件的关系即可,而且知道公鸡最多买20只,母鸡最多买33只,小鸡最多买300只,这样买各种鸡的钱总为100,元,鸡的只数也是100;
```
public class BQMJ {
public static void main(String[] args) {
int cock,hen,chicken=0;
// 定义最多公鸡买19只,外层循环控制
for(cock=0;cock<=19;cock++){
// 母鸡二层循环控制最多33只
for(hen=0;hen<=33;hen++){
// 剩下为小鸡数
chicken=100-cock-hen;
int p;
// 小鸡数必须是三的倍数
p=chicken%3;
if(((5*cock+3*hen+chicken/3)==100
&&(p==0)){
System.out.print("买公鸡:"+cock);
System.out.print("买母鸡:"+hen);
System.out.print("买小鸡:"+chicken);
System.out.println("\n");
}
}
}
}
}
```
结果:
```
可以买公鸡的只数:0 可以买母鸡的只数:25 可以买小鸡的只数:75
可以买公鸡的只数:4 可以买母鸡的只数:18 可以买小鸡的只数:78
可以买公鸡的只数:8 可以买母鸡的只数:11 可以买小鸡的只数:81
可以买公鸡的只数:12 可以买母鸡的只数:4 可以买小鸡的只数:84
```
#### 算法应用之韩信点兵
##### 案列说明:韩信带兵不足百人,3人一行排列多一人,7人一行排列少两人,5人一行正好,本例是计算韩信究竟点了多少兵?
##### 想法:对于韩信点兵算法,只需将7人少2人转换7人多5人,这样解决问题的方法就很明显了,再限定人数不多于100即可。
实现代码:
```
public class Hxin {
public static void main(String[] args){
int a=0,b=0,c=0,preson;
//定义总人数和各种站法的剩余人数
for(preson=0;preson<100;preson++){
//每排三人剩余人数
a=preson%3;
//每排七人的剩余人数
b=preson%7;
//每排五人的剩余人数
c=preson%5;
//都符合条件时的人数
if(a==1&&b==5&&c==0){
// 韩信带兵人数
System.out.println(preson);
}
}
}
}
```
得出结果为:40人
#### 算法应用之斐波那契数列
##### 说明:斐波那契数列的定义:它的第一项和第二项均为1,以后各项都为前两项之和
难点:如何设计好循环
实现代码:
```
public class Fbo {
private static void f(int x){
int f1=1,f2=1,i=3;
if(x==1)System.out.print(f1);
if(x==2)System.out.print(f1+" "+f2);
//求位置大于三的数列
if(x>=3){
System.out.print(f1+" "+f2);
//求数列
while(x>=i){
//求两项之和
f1=f2+f1;
System.out.print(" "+f1);
i++;
f2=f2+f1;
System.out.print(" "+f2);
}
}
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入个数:");
int num=s.nextInt();
System.out.println("你想看的斐波那契数列:");
f(num/2+1);
}
}
```
输入 10:
```
你想看的斐波那契数列:
1 1 2 3 5 8 13 21 34 55
```