三国类单机游戏有哪些

三国类单机游戏

会飞的鱼 会飞的鱼
回答
  • 啊哈 啊哈

    算法介绍:
    其实算法非常简单,当盘子的个数为n时,移动的次数应等于2^n-1(有兴趣的可以自己证明试试看)。后来一位美国学者发现一种出人意料的简单方法,只要轮流进行两步操作就可以了。首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子a上,根据圆盘的数量确定柱子的排放顺序:若n为偶数,按顺时针方向依次摆放 a b c;若n为奇数,按顺时针方向依次摆放 a c b。(1)按顺时针方向把圆盘1从现在的柱子移动到下一根柱子,即当n为偶数时,若圆盘1在柱子a,则把它移动到b;若圆盘1在柱子b,则把它移动到c;若圆盘1在柱子c,则把它移动到a。(2)接着,把另外两根柱子上可以移动的圆盘移动到新的柱子上。即把非空柱子上的圆盘移动到空柱子上,当两根柱子都非空时,移动较小的圆盘。这一步没有明确规定移动哪个圆盘,你可能以为会有多种可能性,其实不然,可实施的行动是唯一的。(3)反复进行(1)(2)操作,最后就能按规定完成汉诺塔的移动。所以结果非常简单,就是按照移动规则向一个方向移动金片:
    如3阶汉诺塔的移动:a→c,a→b,c→b,a→c,b→a,b→c,a→c
    汉诺塔问题也是程序设计中的经典递归问题,下面我们将给出递归和非递归的不同实现源代码。汉诺塔算法的递归实现c++源代码
    include
    include
    using namespace std;ofstream fout("out.txt");void move(int n,char x,char y)
    {
    fout把"号从"挪动到";}
    void hannoi(int n,char a,char b,char c)
    {
    if(n=1)
    move(1,a,c);else
    {
    hannoi(n-1,a,c,b);move(n,a,c);hannoi(n-1,b,a,c);}
    }
    int main()
    {
    fout以下是7层汉诺塔的解法:";hannoi(7,'a','b','c');fout.close();cout输出完毕!return 0;}●汉诺塔算法的递归实现c源代码:
    include
    void hanoi(int n,char a,char b,char c)
    {
    if(n=1)
    {
    printf("move d**k%d from%c to%c\n",n,a,c);}
    else
    {
    hanoi(n-1,a,c,b);printf("move d**k%d from%c to%c\n",n,a,c);hanoi(n-1,b,a,c);}
    }
    main()
    {
    int n;printf("请输入数字n以解决n阶汉诺塔问题:\n");scanf("%d",&n);hanoi(n,'a','b','c');}
    汉诺塔算法的非递归实现c++源代码
    include
    using namespace std;圆盘的个数最多为64
    const int max=64;用来表示每根柱子的信息
    struct st{
    int s[max];柱子上的圆盘存储情况
    int top;栈顶,用来最上面的圆盘
    char name;柱子的名字,可以是a,b,c中的一个
    int top()/取栈顶元素
    {
    return s[top];}
    int pop()/出栈
    {
    return s[top-];}
    void push(int x)/入栈
    {
    s[+top]=x;}
    };long pow(int x,int y);计算x^y
    void creat(st ta[],int n);给结构数组设置初值
    void hannuota(st ta[],long max);移动汉诺塔的主要函数
    int main(void)
    {
    int n;cin>>n;输入圆盘的个数
    st ta[3];三根柱子的信息用结构数组存储
    creat(ta,n);给结构数组设置初值
    long max=pow(2,n)-1;动的次数应等于2^n-1
    hannuota(ta,max);移动汉诺塔的主要函数
    system("pause");return 0;}
    void creat(st ta[],int n)
    {
    ta[0].name='a';ta[0].top=n-1;把所有的圆盘按从大到小的顺序放在柱子a上
    for(int i=0;i;i+)
    ta[0].s[i]=n-i;柱子b,c上开始没有没有圆盘
    ta[1].top=ta[2].top=0;for(int i=0;i;i+)
    ta[1].s[i]=ta[2].s[i]=0;若n为偶数,按顺时针方向依次摆放 a b c
    if(n%2=0)
    {
    ta[1].name='b';ta[2].name='c';}
    else/若n为奇数,按顺时针方向依次摆放 a c b
    {
    ta[1].name='c';ta[2].name='b';}
    }
    long pow(int x,int y)
    {
    long sum=1;for(int i=0;i;i+)
    sum*=x;return sum;}
    void hannuota(st ta[],long max)
    {
    int k=0;累计移动的次数
    int i=0;int ch;while(k)
    {
    按顺时针方向把圆盘1从现在的柱子移动到下一根柱子
    ch=ta[i%3].pop();ta[(i+1)%3].push(ch);cout
    move d**k"[i%3].name
    to"[(i+1)%3].name;i+;把另外两根柱子上可以移动的圆盘移动到新的柱子上
    if(k)
    {/把非空柱子上的圆盘移动到空柱子上,当两根柱子都为空时,移动较小的圆盘
    if(ta[(i+1)%3].top()=0|
    ta[(i-1)%3].top()>0&
    ta[(i+1)%3].top()>ta[(i-1)%3].top())
    {
    ch=ta[(i-1)%3].pop();ta[(i+1)%3].push(ch);cout
    [(i-1)%3].name
    [(i+1)%3].name;}
    else
    {
    ch=ta[(i+1)%3].pop();ta[(i-1)%3].push(ch);cout
    [(i+1)%3].name
    [(i-1)%3].name;}
    }
    }
    }

类似问答
  • 三国战棋类单机游戏

    提问时间:2024-05-19 09:52:40

    三国战棋类单机游戏 三国战棋类单机游戏是一种非常受欢迎的游戏类型,它融合了三国历史和策略战斗的元素,让玩家可以在游戏中体验到三国时期的战争和***斗争。以下是几...

  • 儿时三国类单机游戏

    提问时间:2024-05-19 22:10:01

    儿时三国类单机游戏 儿时三国类单机游戏是很多人童年时期最喜欢的游戏之一,这类游戏不仅有着浓厚的历史氛围,还能让玩家感受到策略与战斗的乐趣。以下是我推荐的几款儿时...

  • 单机三国类***

    提问时间:2024-05-19 00:34:17

    单机三国类*** 单机三国类***是近年来备受玩家喜欢的游戏类型之一,不少玩家在选择游戏时都会考虑该类型游戏的下载量以及评分等因素。以下是我为大家整理的单机三国...

  • 单机版三国类游戏

    提问时间:2024-05-19 16:25:48

    单机版三国类游戏 三国类游戏是一种非常受欢迎的游戏类型,其中单机版三国类游戏更是备受玩家喜爱。这类游戏通常以三国时期为背景,玩家可以扮演历史上的名将或一般士兵,...

  • ***手单机游戏有哪些

    提问时间:2024-05-19 20:17:20

    ***手单机游戏有哪些 ***手单机游戏是一种以***手为主题的游戏,玩家扮演一个专业的***手,通过远距离的***来打击敌人,完成各种任务。这种游戏具有紧张刺...

  • 有哪些单机游戏

    提问时间:2024-05-19 05:39:32

    有哪些单机游戏 1、《天才围棋》围棋起源于***古代,相传已有4000多年的历史,和象棋一样,蕴含着中华民族文化的丰富内涵,为“琴棋书画”四艺之一。这是一个经典...

  • 三国类单机游戏

    提问时间:2024-05-19 15:32:41

    三国类单机游戏 随着科技的发展,现在我们可以随时随地享受到各种各样的游戏。而对于爱好三国题材的游戏玩家来说,这里为大家推荐了一些优秀的三国类单机游戏。1.《三国...

  • 三国类型的单机游戏

    提问时间:2024-05-19 04:06:58

    三国类型的单机游戏 1、《三国戏英杰传》这款三国题材的游戏在玩法上是相当不错的,玩家除了要做好武将的培养之外,装备也是相当重要的一点。装备在淘汰之后还可以通过锻...

  • 单机游戏有哪些

    提问时间:2024-05-19 23:50:53

    单机游戏有哪些 1、《蜘蛛侠:惊人英雄》城市设计上融入了大量的随机事件,冒险的过程当中可以打击各种城市内的犯罪团体,玩家还可以在游戏内发现趣味的探索内容。角色的...

  • 国产单机游戏有哪些

    提问时间:2024-05-19 13:44:53

    国产单机游戏有哪些 1、《创意甜品屋》《创意甜品屋》是一款模拟经营甜品屋的游戏。玩家模拟经营一家甜品屋,制作研发美味的甜品、种植收获食材、将食材加工烘焙出美味的...

精品推荐

友情链接

友链互换QQ:

谷财 备案编号:蜀ICP备11019336号-3商务合作:235-677-2621

Copyright 2009-2020 Chengdu Sanzilewan Technology Co.,Ltd all rights reserve

抵制不良游戏 拒绝盗版游戏 注意自我保护 谨防受骗上当 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活