- 浏览: 71677 次
- 性别:
- 来自: 合肥
最新评论
-
chenxuan72:
我看到第二行的时候就开始皱眉头,流媒体协议我知道RTSP,但不 ...
在 eclipse 中使用 tomcat 像开发普通 JEE 项目一样开发 RED5 项目 -
marulonglong:
:虽然帖子比较老了,但很实用,如今用上火狐8,修改一下 ...
找出 Firefox 插件“不兼容”的真相 -
zhouzhao21:
NanguoCoffee 写道为啥不看官方文档?使用 isXX ...
log4j 性能问题 -
fallen_lord:
xiaoych 写道quaff 写道zhouzhao21 写道 ...
log4j 性能问题 -
xiaoych:
quaff 写道zhouzhao21 写道以前使用 log4j ...
log4j 性能问题
今天去一家游戏公司面试,这一题没推出来。在网上也没找到合理的答案。只能劳烦大家了。请大家不要用穷举法,如果知道答案请将推理过程写出来。谢了。
甲、乙、丙三队互相比赛,每两队之间都比赛了同样多的场数,然后根据得分的多少,决定哪一队是最后的胜利者。规则是每场比赛,胜者得3分,负者得0分,平局各得1分。
甲队在全部比赛结束之后,得意洋洋的说:“我们队赢的场数比你们两队中的任何一队都多。”
乙队反唇相击,道:“我们队输的场数比你们两队中的任何一队都少。”
唯有丙队发言人一声不吭。
你认为丙队会排名第一吗?
注意:甲、乙、丙三队,每两队之间的比赛场数可以不止一场。 甲、乙、丙三队互相比赛,每两队之间都比赛了同样多的场数,然后根据得分的多少,决定哪一队是最后的胜利者。规则是每场比赛,胜者得3分,负者得0分,平局各得1分。
甲队在全部比赛结束之后,得意洋洋的说:“我们队赢的场数比你们两队中的任何一队都多。”
乙队反唇相击,道:“我们队输的场数比你们两队中的任何一队都少。”
唯有丙队发言人一声不吭。
你认为丙队会排名第一吗?
注意:甲、乙、丙三队,每两队之间的比赛场数可以不止一场。
对不起,我真没看懂你的例子,我有两个疑问:
1、看看乙吧,1×3+6在什么情况下能等于8?
2、甲负了5场,乙和丙胜利加起来1+2=3,那两场是跟谁?
嘿嘿,不好意思;是我的问题;当时重在解题思路了,再说也是思路不够缜密,例子举错了~但也只是错例子而已;谢谢指出。
重新发...
/**
*
* @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 ++ ;
}
}
}
}
那个队伍对象就不写了
楼上说的对先用方程式找好数据之间的关系.然后列出来.在解出来就不难了..我这小白代码只是看下..
其实zhouzhao21用的穷举法是没错的,“乙(平)=甲(平)+丙(平) ”是不成立的, 11 < 4 + 9 = 13 ,为什么会多了两场呢?其实是甲队和丙队之间的比赛的。其实只要满足所有队伍平场的总数为偶数就可以用穷举法的。
你说的对,我弄错了,zhouzhao21这个结果应该是正确的。
这个显然不正确,比赛结果不可能总平的场数为:甲平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
质疑你穷举出的结果:
我们看乙队,它平了11场(是3队里最多的),我们站在它的视角,这11场不是跟甲队踢就是跟丙队比赛没错吧?所以:
乙(平)=甲(平)+丙(平)
那么看看你的例子: 11 < 4 + 9 = 13 显然是有问题的!
同理,甲队胜利了8场,那么应该
甲(胜)=乙(负)+丙(负)
看你的例子: 8 < 5 + 6 = 11
其实zhouzhao21用的穷举法是没错的,“乙(平)=甲(平)+丙(平) ”是不成立的, 11 < 4 + 9 = 13 ,为什么会多了两场呢?其实是甲队和丙队之间的比赛的。其实只要满足所有队伍平场的总数为偶数就可以用穷举法的。
这个显然不正确,比赛结果不可能总平的场数为:甲平3,乙平4,丙平4的情况,或者说,两两队相比的比赛,结果不可能出现"甲平,乙负"的情况,平局的总场次一定是个偶数.
我思考过这个问题,但是能力太低不能得出答案,这个问题我化简为六元的不等式组,无奈数学太差,不会解多元不等式组.前面有的楼说这个是解方程的问题,其实从概念上就错了,方程首先是等式,如果有解,一定是确定解,而这个问题我认为如果有解,也无法给出确定解,因为它有多个不等式条件约束.
期待大神给出解答!
joyfun 的回答是正确的。
呵呵,我检查了一下,其实这里只是我的疏忽,解法没错,只是最后忘记了考虑实际的情况
修正:只要在最后在再加一个条件 甲乙丙平场的总数为偶数就行
例如:
甲 赢10 平2 输10 总分:32
乙 赢8 平8 输6 总分:32
丙 赢9 平6 输7 总分:33
因此丙队赢得第一是有可能的;只要满足上面的三个条件;(Y1 > Y3 && X3 > X2 && 甲乙丙平场的总数为偶数)
‘“每两队之间都比赛了同样多的场数”,并不是每个队都比赛了同样多的场数。
确实是这样,不过
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
命题得证
质疑你穷举出的结果:
我们看乙队,它平了11场(是3队里最多的),我们站在它的视角,这11场不是跟甲队踢就是跟丙队比赛没错吧?所以:
乙(平)=甲(平)+丙(平)
那么看看你的例子: 11 < 4 + 9 = 13 显然是有问题的!
同理,甲队胜利了8场,那么应该
甲(胜)=乙(负)+丙(负)
看你的例子: 8 < 5 + 6 = 11
对不起,我真没看懂你的例子,我有两个疑问:
1、看看乙吧,1×3+6在什么情况下能等于8?
2、甲负了5场,乙和丙胜利加起来1+2=3,那两场是跟谁?
W(甲) <= L(乙)+L(丙)
同时也是取子集。
‘“每两队之间都比赛了同样多的场数”,并不是每个队都比赛了同样多的场数。
确实是这样,不过
Win[x] + Tie[x] + Los[x] = Win[y] + Tie[y] + Los[y] = Win[z] + Tie[z] + Los[z] -- (2)
包涵在这个条件之中,是条件的子集。也不能说不成立。只是将条件的范围缩小了。
甲、乙、丙三队互相比赛,每两队之间都比赛了同样多的场数,然后根据得分的多少,决定哪一队是最后的胜利者。规则是每场比赛,胜者得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的情况很容易出现吧。
希望能帮助到你
一个简单的例子就能证明丙有夺冠的可能:
队伍 胜 负 平 总积分
甲 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
)
丙队便可以是第一名
综上所述:
只要满足
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
但用穷举解题只是下下之选。重在推理过程。
不知道答案的朋友也请支持下吧。认会解的人看到。
重在过程。
甲 胜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
)
丙队便可以是第一名
综上所述:
只要满足
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
但用穷举解题只是下下之选。重在推理过程。
不知道答案的朋友也请支持下吧。认会解的人看到。
重在过程。
甲 胜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的情况很容易出现吧。
希望能帮助到你
一个简单的例子就能证明丙有夺冠的可能:
队伍 胜 负 平 总积分
甲 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的情况很容易出现吧。
希望能帮助到你
一个简单的例子就能证明丙有夺冠的可能:
队伍 胜 负 平 总积分
甲 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(丙)
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
也成立
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(丙)对甲输
这个公式是不对的吧?!
因为乙丙之间可以有输赢的,只能说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)
这个是不成立的吧?问题只是说 “每两队之间都比赛了同样多的场数”,并不是每个队都比赛了同样多的场数。
这个是不成立的吧?问题只是说 “每两队之间都比赛了同样多的场数”,并不是每个队都比赛了同样多的场数。
相关推荐
逻辑推理题大全逻辑推理题大全逻辑推理题大全
软件公司笔试经典逻辑推理题附答案;软件公司笔试经典逻辑推理题附答案;软件公司笔试经典逻辑推理题附答案;软件公司笔试经典逻辑推理题附答案
逻辑推理题及答案
逻辑推理题的一些整理,笔试面试什么的都会很有帮助
面试常见的逻辑推理题,希望能帮助即将面试的朋友!
非常好的数字推理题目,适合计算机专业笔试部分的数字逻辑推理题目
该代码简洁明了,能够实现逻辑推理题界面功能,且有相应的注释,易于读者理解。
逻辑推理题精选300道详解
公务员逻辑推理题含答案.pdf
75道经典逻辑推理题,面试时很可能用到!
逻辑推理题得分太高的发生法国是个 的反思反思的他个人
综合能力测试提分题库之逻辑推理题精选320道详解.pdf
逻辑推理题,你脑子好使吗?可以试试
2015面试笔试数字逻辑推理题(答案),包含大量推理题,这是题库。 2015面试笔试数字逻辑推理题(答案),包含大量推理题,这是题库。
行测逻辑推理题及答案解析
逻辑推理新趣题逻辑推理新趣题逻辑推理新趣题逻辑推理新趣题
史上最经典逻辑推理题
很有用的解决逻辑问题的案例。 摘要:编程(C++)解决逻辑推理问题 逻辑 推理 C++ 编程 摘要:编程(C++)解决逻辑推理问题 逻辑 推理 C++ 编程
麦肯锡ceb(shl)逻辑推理题log汇总及答案解析_ceb(shl)文字推理题 ver汇总及答案解析 麦肯锡ceb(shl)逻辑推理题log汇总及答案解析_ce b(shl)文字推理题ver汇总及答案解析 麦肯锡ceb(shl)逻辑推理题lo g汇总及答案解析...
MBA逻辑推理真题借鉴.pdf