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

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

gxjiang





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

5come5帮你背单词 [ purify /'pjuərifai/ vt. 使纯净,净化,简炼,提纯;n. 纯净,纯洁,纯度 ]


一道面试常有的题目

/*有一定数量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帮你背单词 [ publish /'pΛbli/ v. 出版,刊印,公布,发表 ]


算法:
一、先从总数中除掉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帮你背单词 [ wither /'wiðə/ v. (使)凋谢,(使)枯萎 ]


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



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

5come5帮你背单词 [ stair /st/ə/ n. (常pl.)楼梯,阶梯 ]


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

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





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

5come5帮你背单词 [ province /'provins/ n. 省,(学术)领域,(活动)范围 ]


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



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

5come5帮你背单词 [ gracious /'greiəs/ n. 亲切的,和蔼的,有礼貌的 ]


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

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