推理逻辑算法--------------问题抽象与数学建模

问题:5个人百米赛跑,跑完。

A说:E一定是第一名。

B说:我可能是第二名。

C说:A最慢。

D说:C不是最快的。

E说:D应该是第一名。

最后裁判说:E肯定不是第二第三名,只有1、2名猜对了。

问题:输出5人排名


解题思路:开始我是毫无头绪的,后面参照了爱因斯坦的思考题那样对问题进行抽象,然后建立数学模型。

问题抽象:用方法来抽象对话的判断,用数组建立排名模型。

代码:

package 谁是前锋;

public class Main {
	public char[] rank = {'A','B','C','D','E'};
	public int count = 0;
	public static void main(String[] args) {
		Main ma = new Main();
		ma.initMain();
	}
	public void initMain(){
		permutation(rank,0,rank.length);
	}
	public void permutation(char[] rank,int m,int n){
		if( m < n - 1 ){
			permutation(rank,m+1,n);
			for(int i=m+1;i

测试结果:

推理逻辑算法--------------问题抽象与数学建模_第1张图片

这题跟我的爱因斯坦的思考题那样,不过爱因斯坦的思考题更加复杂,需要用到两个枚举类。

爱因斯坦的思考题链接:http://blog.csdn.net/jjfly999/article/details/51120238

你可能感兴趣的:(《算法的乐趣》)