我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 一道面试常有的题目 隐藏签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

gxjiang





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
家族: 詹詹自喜★平平安安
发贴: 866
威望: 0
浮云: 1106
在线等级:
注册时间: 2006-08-02
最后登陆: 2011-10-29

5come5帮你背单词 [ solemn /'soləm/ a. 庄严的,严肃的 ]


一道面试常有的题目

/*有一定数量total的扑克牌,现在两个人甲乙用这些扑克牌玩一个游戏,两人轮流从
扑克牌中为放回地拿出几张扑克牌,每次最多拿max张,怎样拿才能保证第一个拿牌
的人获胜
,本程序提供了一种方法,程序默认甲是第一个拿牌的人*/


我使用的是C++,java不太会,希望有蝈蝈能用Java来完成


[ 此贴被gxjiang在2007-09-30 11:04重新编辑 ]
顶端 Posted: 2007-09-29 22:48 | [楼 主]
gxjiang





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
家族: 詹詹自喜★平平安安
发贴: 866
威望: 0
浮云: 1106
在线等级:
注册时间: 2006-08-02
最后登陆: 2011-10-29

5come5帮你背单词 [ friday /'fraidi/ a. 星期五 ]


算法:
一、先从总数中除掉max+2张牌,因为最后如果只有max+2张且轮到乙拿,明显他就死定了;
二、现在剩余total-max-2张了;你第一次抓的张数就是:剩下的扑克牌%(max+1),就是这个余的结果。
三、除了一二这两种情况的扑克牌,剩下的就是max+1的整数倍了。而一次最多拿max,你从第二次开始就要这样拿:让你拿的数量+对方拿的数量之和为max+1就可以了。这样最后一定是max+2张,且该对方拿







/*有一定数量total的扑克牌,现在两个人甲乙用这些扑克牌玩一个游戏,两人轮流从
扑克牌中为放回地拿出几张扑克牌,每次最多拿max张,怎样拿才能保证第一个拿牌
的人获胜,本程序提供了一种方法,程序默认甲是第一个拿牌的人*/
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
class PlayingCards
{
private:
    int total,max;
public:
    PlayingCards(int total,int max)
    {
        this->total=total;
        this->max=max;
    }
    void run()
    {
        //甲先拿
        int temp=total;
        int first=(temp-max-2)%(max+1);
        temp=temp-first;
        cout<<"甲先拿了"<<first<<"张"<<endl;
        if(temp==1)
        {
            cout<<"甲获得了胜利"<<endl;
        }
        else
        {
            for(;;)
            {
                int ran=rand()%(max)+1;
                temp=temp-ran;
                cout<<"接着乙拿了"<<ran<<"张"<<endl;
                if(temp==1)
                {
                    cout<<"乙获得了胜利"<<endl;
                    break;
                }
                else
                {
                    temp=temp-max-1+ran;
                    cout<<"然后甲拿了"<<max+1-ran<<"张"<<endl;
                    if(temp==1)
                    {
                        cout<<"甲拿过后只剩下1张,甲获得了胜利"<<endl;
                        break;
                    }
                }
            }
        }
    }
};
void main()
{
    int total,max;
    cout<<"请依次输入总的扑克牌数和每次允许拿的最大数目:"<<endl;
    cin>>total>>max;
    PlayingCards pc(total,max);
    pc.run();
}
顶端 Posted: 2007-09-29 22:51 | [1 楼]
gxjiang





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
家族: 詹詹自喜★平平安安
发贴: 866
威望: 0
浮云: 1106
在线等级:
注册时间: 2006-08-02
最后登陆: 2011-10-29

5come5帮你背单词 [ daily /'deili/ a. & ad. 每日的;日报 ]


:一道面试常有的题目
远程图片:Snap1.jpg
顶端 Posted: 2007-09-29 22:51 | [2 楼]
iguard



贝尔诺勋章 自信之戒
性别: 帅哥 状态: 该用户目前不在线
头衔: 要走了
等级: 版主
家族: 战略研究所
发贴: 11259
威望: 5
浮云: 407
在线等级:
注册时间: 2005-12-07
最后登陆: 2009-11-04

5come5帮你背单词 [ peach /pi:t/ n. 桃(树) ]


楼主没说清楚,获胜条件是什么。

感觉应该用回溯法。
阳光普照大地
顶端 Posted: 2007-09-29 22:52 | [3 楼]
jixin96





性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
发贴: 1000
威望: 0
浮云: 1216
在线等级:
注册时间: 2007-09-10
最后登陆: 2008-06-29

5come5帮你背单词 [ trust /trΛst/ n. 信任,信赖,可信任的人(或物),委托,保管;vt. 信赖,委托,托付,依靠,依赖 ]


如果不限定算法效率,这个问题很简单,只要注意一些简单的细节问题就行了
顶端 Posted: 2007-09-30 18:46 | [4 楼]
clylove



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 805
威望: 0
浮云: 1356
在线等级:
注册时间: 2006-10-03
最后登陆: 2009-09-30

5come5帮你背单词 [ regularly /'regjuləli/ ad. 定期地,有规律地 ]


lz什么都没说清楚
顶端 Posted: 2007-09-30 18:54 | [5 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.009248(s) query 5, Time now is:11-23 09:11, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号