`
zhouzhao21
  • 浏览: 71677 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

网上没找到答案的逻辑推理题

阅读更多
今天去一家游戏公司面试,这一题没推出来。在网上也没找到合理的答案。只能劳烦大家了。请大家不要用穷举法,如果知道答案请将推理过程写出来。谢了。

甲、乙、丙三队互相比赛,每两队之间都比赛了同样多的场数,然后根据得分的多少,决定哪一队是最后的胜利者。规则是每场比赛,胜者得3分,负者得0分,平局各得1分。

甲队在全部比赛结束之后,得意洋洋的说:“我们队赢的场数比你们两队中的任何一队都多。”

乙队反唇相击,道:“我们队输的场数比你们两队中的任何一队都少。”

唯有丙队发言人一声不吭。

你认为丙队会排名第一吗?

注意:甲、乙、丙三队,每两队之间的比赛场数可以不止一场。 甲、乙、丙三队互相比赛,每两队之间都比赛了同样多的场数,然后根据得分的多少,决定哪一队是最后的胜利者。规则是每场比赛,胜者得3分,负者得0分,平局各得1分。

甲队在全部比赛结束之后,得意洋洋的说:“我们队赢的场数比你们两队中的任何一队都多。”

乙队反唇相击,道:“我们队输的场数比你们两队中的任何一队都少。”

唯有丙队发言人一声不吭。

你认为丙队会排名第一吗?

注意:甲、乙、丙三队,每两队之间的比赛场数可以不止一场。
分享到:
评论
35 楼 jnoee 2009-09-15  
标准答案其实是这样的:
甲乙两队打平,所以一个“得意洋洋”一个“反唇相讥”。
丙队是垫底的,所以丙队发言“一声不吭”。
34 楼 monsterjiao 2009-09-15  
bookong 写道
monsterjiao 写道
如果喜欢足球比赛并关注得的话,心算一下应该就能出来吧:
一个简单的例子就能证明丙有夺冠的可能:
队伍  胜   负   平    总积分
甲    3    5   0      9
乙    1    1   6      8  
丙    2    2   4      10
此题解法:
先证明丙会超过乙的积分:乙比并少输,但是输球是0分,而胜是3分,平是1分,那么丙只要将比乙多输的一场放到胜场上,也就是说丙比乙多赢也多输了一场,而平局自然就是乙比丙多了两场,算下来3-2=1,丙超过了乙的积分。
然后证明丙会超过甲的积分:甲比丙多赢一场,光看胜场是多了3分,而甲比并多输的场是可以无限多加入为N吧(反正题目中又没有说三队之前是进行了多少场比较),那么丙的平局的场次自然就比甲多出N-1,(N-1)*1>3的情况很容易出现吧。
希望能帮助到你


对不起,我真没看懂你的例子,我有两个疑问:
1、看看乙吧,1×3+6在什么情况下能等于8?
2、甲负了5场,乙和丙胜利加起来1+2=3,那两场是跟谁?


嘿嘿,不好意思;是我的问题;当时重在解题思路了,再说也是思路不够缜密,例子举错了~但也只是错例子而已;谢谢指出。
33 楼 q472732639 2009-09-13  
啊lei lei!..审题没审明白..
32 楼 q472732639 2009-09-13  
/**
 * 
 * @author q472732639
 *
 */
public class Test {

	public static void main(String [] args){
		TeamObj a = new TeamObj();		//A队
		TeamObj b = new TeamObj();		//B队
		TeamObj c = new TeamObj();		//C队
		int roundNum = 1;	//回合数
		/*
		 * 下面的纯粹就是按照题意所写的判断 不精湛 粗略的理解为a是必须赢数多.但不一定不输,
		 * b必须是输数少,但不一定去赢,c是积分一定要高,但一定要让A,B两组积分低的情况下不影响战绩..全是废话
		*/
		for(int i = 0 ; i < roundNum ; i ++){
			if(a.getWinNum() <= b.getWinNum() 
					|| a.getWinNum() <= c.getWinNum()){
				a.setWinNum(a.getWinNum() + 1);
				a.setMin(a.getMin() + 2);
				if(b.getLoseNum() - c.getLoseNum() > 1){
					b.setLoseNum(b.getLoseNum() + 1);
				}else{
					c.setLoseNum(c.getLoseNum() + 1);
				}
			}else if(b.getLoseNum() >= c.getLoseNum()){
				b.setWinNum(b.getWinNum() + 1);
				b.setMin(b.getMin() + 2);
				if(a.getWinNum() - b.getWinNum() > 1){
					a.setLoseNum(a.getLoseNum() + 1);
				}else{
					c.setLoseNum(c.getLoseNum() + 1);
				}
			}else if(b.getLoseNum() >= a.getLoseNum()){
				b.setWinNum(b.getWinNum() + 1);
				b.setMin(b.getMin() + 2);
				a.setLoseNum(c.getLoseNum() + 1);
			}else if(c.getMin() <= a.getMin() || c.getMin() <= b.getMin()){
				c.setWinNum(c.getWinNum() + 1);
				c.setMin(c.getMin() + 2);
				if(a.getWinNum() - c.getWinNum() > 1){
					a.setLoseNum(a.getLoseNum() + 1);
				}else if(b.getLoseNum() - c.getLoseNum() > 1){
					b.setLoseNum(b.getLoseNum() + 1);
				}else{
					c.setDrawNum(b.getDrawNum() + 1);
					c.setMin(c.getMin() + 1);
					if(b.getMin() > a.getMin()){
						a.setMin(a.getMin() + 1);
						a.setDrawNum(a.getDrawNum() + 1);
					}else{
						b.setMin(b.getMin() + 1);
						b.setDrawNum(b.getDrawNum() + 1);
					}
				}
			}
			if((a.getWinNum() > c.getWinNum() && a.getWinNum() > b.getWinNum()) 
					&& (b.getLoseNum() < a.getLoseNum() && b.getLoseNum() < c.getLoseNum() ) 
						&& (c.getMin() > a.getMin() && c.getMin() > b.getMin()) ){
				System.out.println("a win :" + a.getWinNum() + "  lose :" + a.getLoseNum() + "  drawnum :" + a.getDrawNum() + "  min :" + a.getMin());
				System.out.println("b win :" + b.getWinNum() + "  lose :" + b.getLoseNum() + "  drawnum :" + b.getDrawNum() + "  min :" + b.getMin());
				System.out.println("c win :" + c.getWinNum() + "  lose :" + c.getLoseNum() + "  drawnum :" + c.getDrawNum() + "  min :" + c.getMin());
				System.out.println("roundNum : " + roundNum);
				break;
			}else{
				System.out.println("a win :" + a.getWinNum() + "  lose :" + a.getLoseNum() + "  drawnum :" + a.getDrawNum() + "  min :" + a.getMin());
				System.out.println("b win :" + b.getWinNum() + "  lose :" + b.getLoseNum() + "  drawnum :" + b.getDrawNum() + "  min :" + b.getMin());
				System.out.println("c win :" + c.getWinNum() + "  lose :" + c.getLoseNum() + "  drawnum :" + c.getDrawNum() + "  min :" + c.getMin());
				System.out.println("-------------------------------------------------------");
				roundNum ++ ;
			}
		}
	}
	
}
31 楼 q472732639 2009-09-13  
package filter;

public class TeamObj {

	private int min;
	
	private int winNum;
	
	private int loseNum;
	
	private int drawNum;

	public int getMin() {
		return min;
	}

	public void setMin(int min) {
		this.min = min;
	}

	public int getWinNum() {
		return winNum;
	}

	public void setWinNum(int winNum) {
		this.winNum = winNum;
	}

	public int getLoseNum() {
		return loseNum;
	}

	public void setLoseNum(int loseNum) {
		this.loseNum = loseNum;
	}

	public int getDrawNum() {
		return drawNum;
	}

	public void setDrawNum(int drawNum) {
		this.drawNum = drawNum;
	}
	
}


重新发...
30 楼 q472732639 2009-09-13  

/**
*
* @author q472732639
*
*/
public class Test {


public static void main(String [] args){
TeamObj a = new TeamObj(); //A队
TeamObj b = new TeamObj(); //B队
TeamObj c = new TeamObj(); //C队
int roundNum = 1; //回合数
/*
* 下面的纯粹就是按照题意所写的判断 不精湛 粗略的理解为a是必须赢数多.但不一定不输,
* b必须是输数少,但不一定去赢,c是积分一定要高,但一定要让A,B两组积分低的情况下不影响战绩..全是废话
*/
for(int i = 0 ; i < roundNum ; i ++){
if(a.getWinNum() <= b.getWinNum()
|| a.getWinNum() <= c.getWinNum()){
a.setWinNum(a.getWinNum() + 1);
a.setMin(a.getMin() + 2);
if(b.getLoseNum() - c.getLoseNum() > 1){
b.setLoseNum(b.getLoseNum() + 1);
}else{
c.setLoseNum(c.getLoseNum() + 1);
}
}else if(b.getLoseNum() >= c.getLoseNum()){
b.setWinNum(b.getWinNum() + 1);
b.setMin(b.getMin() + 2);
if(a.getWinNum() - b.getWinNum() > 1){
a.setLoseNum(a.getLoseNum() + 1);
}else{
c.setLoseNum(c.getLoseNum() + 1);
}
}else if(b.getLoseNum() >= a.getLoseNum()){
b.setWinNum(b.getWinNum() + 1);
b.setMin(b.getMin() + 2);
a.setLoseNum(c.getLoseNum() + 1);
}else if(c.getMin() <= a.getMin() || c.getMin() <= b.getMin()){
c.setWinNum(c.getWinNum() + 1);
c.setMin(c.getMin() + 2);
if(a.getWinNum() - c.getWinNum() > 1){
a.setLoseNum(a.getLoseNum() + 1);
}else if(b.getLoseNum() - c.getLoseNum() > 1){
b.setLoseNum(b.getLoseNum() + 1);
}else{
c.setDrawNum(b.getDrawNum() + 1);
c.setMin(c.getMin() + 1);
if(b.getMin() > a.getMin()){
a.setMin(a.getMin() + 1);
a.setDrawNum(a.getDrawNum() + 1);
}else{
b.setMin(b.getMin() + 1);
b.setDrawNum(b.getDrawNum() + 1);
}
}
}
if((a.getWinNum() > c.getWinNum() && a.getWinNum() > b.getWinNum())
&& (b.getLoseNum() < a.getLoseNum() && b.getLoseNum() < c.getLoseNum() )
&& (c.getMin() > a.getMin() && c.getMin() > b.getMin()) ){
System.out.println("a win :" + a.getWinNum() + "  lose :" + a.getLoseNum() + "  drawnum :" + a.getDrawNum() + "  min :" + a.getMin());
System.out.println("b win :" + b.getWinNum() + "  lose :" + b.getLoseNum() + "  drawnum :" + b.getDrawNum() + "  min :" + b.getMin());
System.out.println("c win :" + c.getWinNum() + "  lose :" + c.getLoseNum() + "  drawnum :" + c.getDrawNum() + "  min :" + c.getMin());
System.out.println("roundNum : " + roundNum);
break;
}else{
System.out.println("a win :" + a.getWinNum() + "  lose :" + a.getLoseNum() + "  drawnum :" + a.getDrawNum() + "  min :" + a.getMin());
System.out.println("b win :" + b.getWinNum() + "  lose :" + b.getLoseNum() + "  drawnum :" + b.getDrawNum() + "  min :" + b.getMin());
System.out.println("c win :" + c.getWinNum() + "  lose :" + c.getLoseNum() + "  drawnum :" + c.getDrawNum() + "  min :" + c.getMin());
System.out.println("-------------------------------------------------------");
roundNum ++ ;
}
}
}

}


那个队伍对象就不写了
楼上说的对先用方程式找好数据之间的关系.然后列出来.在解出来就不难了..我这小白代码只是看下..
29 楼 bookong 2009-09-10  
lindakun 写道

其实zhouzhao21用的穷举法是没错的,“乙(平)=甲(平)+丙(平) ”是不成立的, 11 < 4 + 9 = 13 ,为什么会多了两场呢?其实是甲队和丙队之间的比赛的。其实只要满足所有队伍平场的总数为偶数就可以用穷举法的。


你说的对,我弄错了,zhouzhao21这个结果应该是正确的。
28 楼 lugionline 2009-09-10  
lindakun 写道
zhouzhao21 写道
boywukong 写道
lindakun 写道
个人写的数学解决方法:
         
  综上所述:
            只要满足
                     Y1 > Y3 && X3 > X2
                     即 甲输的场数多于丙输的场数 同时 丙赢的场数多于乙赢的场数
                    (例如:
                      甲 赢3 平3 输3
                      乙 赢2 平4 输3
                      丙 赢3 平4 输2
                     )
            丙队便可以是第一名
 
 


   这个显然不正确,比赛结果不可能总平的场数为:甲平3,乙平4,丙平4的情况,或者说,两两队相比的比赛,结果不可能出现"甲平,乙负"的情况,平局的总场次一定是个偶数.
   我思考过这个问题,但是能力太低不能得出答案,这个问题我化简为六元的不等式组,无奈数学太差,不会解多元不等式组.前面有的楼说这个是解方程的问题,其实从概念上就错了,方程首先是等式,如果有解,一定是确定解,而这个问题我认为如果有解,也无法给出确定解,因为它有多个不等式条件约束.
   期待大神给出解答!


joyfun 的回答是正确的。


呵呵,我检查了一下,其实这里只是我的疏忽,解法没错,只是最后忘记了考虑实际的情况
         修正:只要在最后在再加一个条件 甲乙丙平场的总数为偶数就行
                 例如:
                      甲 赢10 平2 输10   总分:32
                      乙 赢8  平8  输6    总分:32
                      丙 赢9  平6  输7    总分:33
                 因此丙队赢得第一是有可能的;只要满足上面的三个条件;(Y1 > Y3 && X3 > X2 && 甲乙丙平场的总数为偶数)


显然不对么,很容易举出反例了,比方

甲赢 3 场
甲输 2 场
甲平 0 场

乙赢 1 场
乙输 0 场
乙平 4 场

丙赢 2 场
丙输 1 场
丙平 2 场

甲输 2 场 > 丙输 1 场
丙赢 2 场 > 乙输 0 场
平场总数是 6 偶数

不过甲积分 9 , 丙积分 8
27 楼 lindakun 2009-09-10  
bookong 写道
zhouzhao21 写道
丙是可以第一的。用穷举可以算的出来。如
     甲 胜8 平4 负10
   乙 胜6 平11 负5
   丙 胜7 平9 负6
但用穷举解题只是下下之选。重在推理过程。
不知道答案的朋友也请支持下吧。认会解的人看到。
重在过程。


质疑你穷举出的结果:
我们看乙队,它平了11场(是3队里最多的),我们站在它的视角,这11场不是跟甲队踢就是跟丙队比赛没错吧?所以:
乙(平)=甲(平)+丙(平)
那么看看你的例子: 11 < 4 + 9 = 13  显然是有问题的!

同理,甲队胜利了8场,那么应该
甲(胜)=乙(负)+丙(负)
看你的例子: 8 < 5 + 6 = 11


其实zhouzhao21用的穷举法是没错的,“乙(平)=甲(平)+丙(平) ”是不成立的, 11 < 4 + 9 = 13 ,为什么会多了两场呢?其实是甲队和丙队之间的比赛的。其实只要满足所有队伍平场的总数为偶数就可以用穷举法的。
26 楼 lindakun 2009-09-10  
zhouzhao21 写道
boywukong 写道
lindakun 写道
个人写的数学解决方法:
         
  综上所述:
            只要满足
                     Y1 > Y3 && X3 > X2
                     即 甲输的场数多于丙输的场数 同时 丙赢的场数多于乙赢的场数
                    (例如:
                      甲 赢3 平3 输3
                      乙 赢2 平4 输3
                      丙 赢3 平4 输2
                     )
            丙队便可以是第一名
 
 


   这个显然不正确,比赛结果不可能总平的场数为:甲平3,乙平4,丙平4的情况,或者说,两两队相比的比赛,结果不可能出现"甲平,乙负"的情况,平局的总场次一定是个偶数.
   我思考过这个问题,但是能力太低不能得出答案,这个问题我化简为六元的不等式组,无奈数学太差,不会解多元不等式组.前面有的楼说这个是解方程的问题,其实从概念上就错了,方程首先是等式,如果有解,一定是确定解,而这个问题我认为如果有解,也无法给出确定解,因为它有多个不等式条件约束.
   期待大神给出解答!


joyfun 的回答是正确的。


呵呵,我检查了一下,其实这里只是我的疏忽,解法没错,只是最后忘记了考虑实际的情况
         修正:只要在最后在再加一个条件 甲乙丙平场的总数为偶数就行
                 例如:
                      甲 赢10 平2 输10   总分:32
                      乙 赢8  平8  输6    总分:32
                      丙 赢9  平6  输7    总分:33
                 因此丙队赢得第一是有可能的;只要满足上面的三个条件;(Y1 > Y3 && X3 > X2 && 甲乙丙平场的总数为偶数)
25 楼 lugionline 2009-09-09  
zhouzhao21 写道
fudc 写道
Win[x] + Tie[x] + Los[x] = Win[y] + Tie[y] + Los[y] = Win[z] + Tie[z] + Los[z]  -- (2)

这个是不成立的吧?问题只是说 ‘“每两队之间都比赛了同样多的场数”,并不是每个队都比赛了同样多的场数。


‘“每两队之间都比赛了同样多的场数”,并不是每个队都比赛了同样多的场数。    
     确实是这样,不过
        Win[x] + Tie[x] + Los[x] = Win[y] + Tie[y] + Los[y] = Win[z] + Tie[z] + Los[z]  -- (2)
包涵在这个条件之中,是条件的子集。也不能说不成立。只是将条件的范围缩小了。


完全可以证明
    每两队之间都比赛了同样多的场数

    Win[x] + Tie[x] + Los[x] = Win[y] + Tie[y] + Los[y] = Win[z] + Tie[z] + Los[z]
是等价的,并不存在条件返回放大或者缩小

假设 每两队之间都比赛了同样多的场数,那么有

Match[x, y] = T
Match[y, z] = T
Match[z, x] = T

所以各队的比赛场次是 Match[x] = Match[y] = Match[z] = 2 * T

反过来
假设 Win[x] + Tie[x] + Los[x] = Win[y] + Tie[y] + Los[y] = Win[z] + Tie[z] + Los[z]
也即 Match[x] = Match[y] = Match[z] = T


Match[x, y] = a
Match[y, z] = b
Match[z, x] = c


Match[x] = a + c
Match[y] = a + b
Match[z] = b + c
也即 a + c = a + b = b + c = T
推出 a = b = c

命题得证



24 楼 bookong 2009-09-09  
zhouzhao21 写道
丙是可以第一的。用穷举可以算的出来。如
     甲 胜8 平4 负10
   乙 胜6 平11 负5
   丙 胜7 平9 负6
但用穷举解题只是下下之选。重在推理过程。
不知道答案的朋友也请支持下吧。认会解的人看到。
重在过程。


质疑你穷举出的结果:
我们看乙队,它平了11场(是3队里最多的),我们站在它的视角,这11场不是跟甲队踢就是跟丙队比赛没错吧?所以:
乙(平)=甲(平)+丙(平)
那么看看你的例子: 11 < 4 + 9 = 13  显然是有问题的!

同理,甲队胜利了8场,那么应该
甲(胜)=乙(负)+丙(负)
看你的例子: 8 < 5 + 6 = 11
23 楼 bookong 2009-09-09  
monsterjiao 写道
如果喜欢足球比赛并关注得的话,心算一下应该就能出来吧:
一个简单的例子就能证明丙有夺冠的可能:
队伍  胜   负   平    总积分
甲    3    5   0      9
乙    1    1   6      8  
丙    2    2   4      10
此题解法:
先证明丙会超过乙的积分:乙比并少输,但是输球是0分,而胜是3分,平是1分,那么丙只要将比乙多输的一场放到胜场上,也就是说丙比乙多赢也多输了一场,而平局自然就是乙比丙多了两场,算下来3-2=1,丙超过了乙的积分。
然后证明丙会超过甲的积分:甲比丙多赢一场,光看胜场是多了3分,而甲比并多输的场是可以无限多加入为N吧(反正题目中又没有说三队之前是进行了多少场比较),那么丙的平局的场次自然就比甲多出N-1,(N-1)*1>3的情况很容易出现吧。
希望能帮助到你


对不起,我真没看懂你的例子,我有两个疑问:
1、看看乙吧,1×3+6在什么情况下能等于8?
2、甲负了5场,乙和丙胜利加起来1+2=3,那两场是跟谁?
22 楼 monsterjiao 2009-09-09  
如果喜欢足球比赛并关注得的话,心算一下应该就能出来吧:
一个简单的例子就能证明丙有夺冠的可能:
队伍  胜   负   平    总积分
甲    3    5   0      9
乙    1    1   6      8  
丙    2    2   4      10
此题解法:
先证明丙会超过乙的积分:乙比并少输,但是输球是0分,而胜是3分,平是1分,那么丙只要将比乙多输的一场放到胜场上,也就是说丙比乙多赢也多输了一场,而平局自然就是乙比丙多了两场,算下来3-2=1,丙超过了乙的积分。
然后证明丙会超过甲的积分:甲比丙多赢一场,光看胜场是多了3分,而甲比并多输的场是可以无限多加入为N吧(反正题目中又没有说三队之前是进行了多少场比较),那么丙的平局的场次自然就比甲多出N-1,(N-1)*1>3的情况很容易出现吧。
希望能帮助到你
21 楼 zhouzhao21 2009-09-08  
fudc 写道
因为甲赢的场数就是乙和丙输的场数的和,即:W(甲)=L(乙)+L(丙)

这个公式是不对的吧?!
因为乙丙之间可以有输赢的,只能说W(甲)<L(乙)+L(丙)

W(甲)=L(乙)对甲输+L(丙)对甲输

L(乙)+L(丙) >= L(乙)对甲输+L(丙)对甲输


W(甲) <= L(乙)+L(丙)
同时也是取子集。
20 楼 zhouzhao21 2009-09-08  
fudc 写道
Win[x] + Tie[x] + Los[x] = Win[y] + Tie[y] + Los[y] = Win[z] + Tie[z] + Los[z]  -- (2)

这个是不成立的吧?问题只是说 ‘“每两队之间都比赛了同样多的场数”,并不是每个队都比赛了同样多的场数。


‘“每两队之间都比赛了同样多的场数”,并不是每个队都比赛了同样多的场数。    
     确实是这样,不过
        Win[x] + Tie[x] + Los[x] = Win[y] + Tie[y] + Los[y] = Win[z] + Tie[z] + Los[z]  -- (2)
包涵在这个条件之中,是条件的子集。也不能说不成立。只是将条件的范围缩小了。
19 楼 fudc 2009-09-08  
推理过程:
a代表甲
b代表乙
c代表丙
1代表赢,
2代表平
3代表输(没有用到)

a1 > b1
   > c1

b1 + b2 > a1 + a2
       > c1 + c2

隐含条件
a2 <= b2 + c2
b2 <= a2 + c2
c2 <= a2 + b2
否则这么多平局跟谁平去?



3a1 + a2
3b1 + b2
3c1 + c2
之中
3c1 + c2 是否可能是最大的。


这里我要找到一种可能性使c是最大的,那么我就可以通过合理假设尽可能使a和b最小,使c最大。当然是在满足所有限制条件的情况下。

合理假设:
1. b1 = 0; 如果b没有赢过,积分无疑是最可能小的情况了。这样3b1+b2分数才尽可能小。
2. c1 = a1 – 1。3c1+c2要最大。那么再跟3a1+a2比较的时候,就要尽可能在赢的场数上跟a1差距缩小,这样分数才会最大嘛。因为c1 + c2 < b2,c1<a1,所以理想情况是c1 = a1 – 1,c2用足。这样3c1+c2分数才尽可能大。
3. b2 = a2 + c2。b的平局都是和a和c打的。如果a和c除了跟b的平局外还互相有平局的话,那么c2会比没有ac互相平局的时候大,因为c1 + c2 < b2, 所以c和a每多一场平局,c1就不得不少一场,就少了两分(赢变成了平,3-1=2)。这在跟b比较的时候是不利的。所以ac没有互相平局才最有利。这样3c1+c2分数才尽可能大。
4. c2 =a2 + 4。由于希望3c1+c2>3a1+a2,应用假设2 (c1 = a1 – 1),3a1 – 3 + c2 > 3a1 + a2, 那么c2 > a2 + 3。所以需要c2 >=a2 + 4成立,3c1+c2>3a1+a2才成立。如果c2 =a2 + 5或者更多的话,因为c1 + c2 < b2的限制,c2每多一场,c1就少一场,所以c2刚刚比a2多4场是最有利的。这样3c1+c2分数才尽可能大。


经过上述合理假设:
a: 3a1 + a2
b: 3b1 + b2 = b2 = a2 + c2= 2a2 + 4
c: 3c1 + c2 = 3a1 – 3 + a2 + 4 = 3a1 + a2 + 1

问题演变为是否存在合理数值使得
3a1 + a2 + 1 > 2a2 + 4

3a1 – a2 > 3

a1如果取值为1,那么a2需为负数
a1如果取值为2, 那么a2可以是1或者2

验证:
a1 = 2, a2 = 1    7
b1 = 0, b2 = 6    6
c1 = 1, c2 = 5    8
成立

a1 = 2, a2 = 2    8
b1 = 0, b2 = 8    8
c1 = 1, c2 = 6    9
也成立
18 楼 dxueshen 2009-09-08  
线性规划:单纯形法!
17 楼 fudc 2009-09-08  
因为甲赢的场数就是乙和丙输的场数的和,即:W(甲)=L(乙)+L(丙)

这个公式是不对的吧?!
因为乙丙之间可以有输赢的,只能说W(甲)<L(乙)+L(丙)

W(甲)=L(乙)对甲输+L(丙)对甲输

L(乙)+L(丙) >= L(乙)对甲输+L(丙)对甲输
16 楼 fudc 2009-09-08  
Win[x] + Tie[x] + Los[x] = Win[y] + Tie[y] + Los[y] = Win[z] + Tie[z] + Los[z]  -- (2)

这个是不成立的吧?问题只是说 “每两队之间都比赛了同样多的场数”,并不是每个队都比赛了同样多的场数。

相关推荐

Global site tag (gtag.js) - Google Analytics