日期:2014-05-20  浏览次数:20961 次

求个算法
有三家A,B,C,其中C是电脑,每家都有9张牌(从1到9)

每次电脑随机出一张,然后其他两家根据电脑的牌出各出一张,如果三张牌加起来大于15的话,那么这三张牌就算0点,如果小于等于15,那么A,B两家就所得的点数就是自己出的牌的点数
如此循环6次,看谁得到点数最多,那家就赢咯


我个人认为,如果知道电脑出什么牌,那么可以得出,出什么牌赢的几率最大

------解决方案--------------------
Mark,估计这个跟猜20差不多,不过是变成3个人了。

猜20其实是说有甲、乙2个人,每人每次出1~3,先由甲说1/2/3再由乙说1/2/3。最开始总数为0 ,当其中一个说出数字以后总数就增加相应的值。比如,当甲说2,这时总数就为0 +2 = 2,当乙说3,这时的总数就为2 + 3 = 5。当最先有一个人首先加到20的时候,这个人就赢了。

这个游戏有个规律,由于20 = 4 *5,所以甲不管出什么,乙主要出的数跟甲的数和加在一起等于4就可以了。这样永远都是乙赢。

LZ的这个问题也许有这样的规律,可以朝这个方向考虑一下
------解决方案--------------------
int nACount = 0;
int nBCount = 0;
for(int i=0;i <9;i++)
{
int nCValue = 1-9 随机数//;
Console.WriteLine( "A= ");
int nAValue = Convert.ToInt32(Readline());
Console.WriteLine( "B= ");
int nBValue = Convert.ToInt32(Readline());
if(nCValue +nAValue + nBValue <15)
{ nACount += nAValue ;
nBCount += nBValue ;
}
}
------解决方案--------------------
int nACount = 0;
int nBCount = 0;
for(int i=0;i <9;i++)
{
int nCValue = 1-9 随机数//;
Console.WriteLine( "A= ");
int nAValue = Convert.ToInt32(Readline());
Console.WriteLine( "B= ");
int nBValue = Convert.ToInt32(Readline());
if(nCValue +nAValue + nBValue <15)
{ nACount += nAValue ;
nBCount += nBValue ;
}
}
if(nACount> nBCount)
{
Console.WriteLine( "A Win the Game ! ");
}
else
Console.WriteLine( "B Win the Game ! ");