java――智力题:三个枪手(命中率不同)为女人而战斗 (一)

2014-11-24 11:07:14 · 作者: · 浏览: 3

题目:
三个小伙子同时爱上了一 个姑娘,为了决定他们谁能娶这个姑娘,他们决定用手枪进行一次决斗。小李的命中率是30%,小黄比他好些,命中率是50%,最出色的枪手是小林,他从不失 误,命中率是100%。由于这个显而易见的事实,为公平起见,他们决定按这样的顺序:小李先开枪,小黄第二,小林最后。然后这样循环,直到他们只剩下一个 人。那么这三个人中谁活下来的机会最大呢?他们都应该采取什么样的策略?


代码:
创建一个类,用来初始化人物背景

[java]
package wyp.wife.copy;

import java.math.BigDecimal;

/**
* 对象类 :挑战者信息 修改日期:2013-5-19 作者: 倒霉蛋
*/
public class Challenger {
// 挑战者姓名
private String name;
// 命中率
private double hit_rate;
// 生 死
private boolean alive;
// 开枪的次数
private int num;

public Challenger(String name, double hit_rate) {
super();
this.name = name;
this.hit_rate = hit_rate;
this.alive = true;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public double getHit_rate() {
return hit_rate;
}

public void setHit_rate(double hit_rate) {
BigDecimal b = new BigDecimal(hit_rate);
hit_rate = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleva lue();
this.hit_rate = hit_rate;
}

public boolean isAlive() {
return alive;
}

public void setAlive(boolean alive) {
this.alive = alive;
}

public int getNum() {
return num;
}

public void setNum(int num) {
this.num = num;
}

@Override
public String toString() {
return "[姓名=" + name + ", 命中率=" + hit_rate + ", 开枪的次数=" + num + "]";
}

}

package wyp.wife.copy;

import java.math.BigDecimal;

/**
* 对象类 :挑战者信息 修改日期:2013-5-19 作者: 倒霉蛋
*/
public class Challenger {
// 挑战者姓名
private String name;
// 命中率
private double hit_rate;
// 生 死
private boolean alive;
// 开枪的次数
private int num;

public Challenger(String name, double hit_rate) {
super();
this.name = name;
this.hit_rate = hit_rate;
this.alive = true;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public double getHit_rate() {
return hit_rate;
}

public void setHit_rate(double hit_rate) {
BigDecimal b = new BigDecimal(hit_rate);
hit_rate = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleva lue();
this.hit_rate = hit_rate;
}

public boolean isAlive() {
return alive;
}

public void setAlive(boolean alive) {
this.alive = alive;
}

public int getNum() {
return num;
}

public void setNum(int num) {
this.num = num;
}

@Override
public String toString() {
return "[姓名=" + name + ", 命中率=" + hit_rate + ", 开枪的次数=" + num + "]";
}

}


[java]
package wyp.wife.copy;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class TakeWife {

public static void main(String[] args) {
TakeWife takeWife = new TakeWife();
takeWife.start();
}

public void start() {
Challenger one = new Challenger("one", 0.30);
Challenger two = new Challenger("two", 0.50);
Challenger three = new Challenger("three", 1.00);
List isEnd = new ArrayList();
isEnd.add(one);
System.out.println("选手" + one + "入场");
isEnd.add(two);
System.out.println("选手" + two + "入场");
isEnd.add(three);
System.out.println("选手" + three + "入场");
System.out.println("挑战者全部就位");
// 为了女人他们开始了拼杀 -<-<--
while (isEnd.size() != 1) {
happen(isEnd);
}