美文网首页
c语言求解循环汉诺塔问题

c语言求解循环汉诺塔问题

作者: 一路向后 | 来源:发表于2022-05-22 21:24 被阅读0次

1.问题描述

描述
Eli最近迷上了汉诺塔。她玩了传统汉诺塔后突发奇想,发明了一种新的汉诺塔玩法。
有A、B、C三个柱子顺时针放置,移动的次序为A仅可以到B,B仅可以到C、C仅可以到A。即只可顺时针移动,不可逆时针移动。当然,汉诺塔的普适规则是适用的:每次移动后,大金片必须在小金片的下面。
现在A柱子上有n\n 个金片。Eli想知道,她把这些全部移动到B或C,分别要多少次操作?
输入描述:
一个正整数n\n 。(n<10^7)(n<10
7
)
输出描述:
两个整数,分别代表A移到B和A移到C的最少操作数。由于该数可能过大,你需要对1000000007取模。

2.源码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
        int n = -1;
    int a = 2, b = 1;
    int c = 2, d = 1;
    int i;

        scanf("%d", &n);

        if(n <= 0)
        {
        return -1;
        }

    for(i=1; i<n; i++)
    {
        c = ((2 * a) % 1000000007 + (b + 2) % 1000000007) % 1000000007;
        d = ((2 * a) % 1000000007 + 1) % 1000000007;

        a = c;
        b = d;
    }

    printf("%d, %d\n", b, a);

        return 0;
}

3.编译源码

$ gcc -o test tes.c

4.运行及其结果

$ ./test
2
5, 7

相关文章

  • c语言求解循环汉诺塔问题

    1.问题描述 描述Eli最近迷上了汉诺塔。她玩了传统汉诺塔后突发奇想,发明了一种新的汉诺塔玩法。有A、B、C三个柱...

  • C语言——汉诺塔问题

    汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下...

  • 动态规划刷题整理(持续更新)

    (持续更新) 奇怪的汉诺塔(4柱汉诺塔) 描述汉诺塔问题,条件如下:1、这里有A、B、C和D四座塔。2、这里有n个...

  • 递归求解汉诺塔问题

    数据结构习题解析・邓俊峰 课后习题 问题有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次...

  • 汉诺塔问题(递归求解)

  • 递归算法求解汉诺塔问题

    Hanoi(汉诺)塔问题,这是一个古典的数学问题。古印度有一个梵塔,塔内有3个柱子A,B,C,开始时A柱上套有64...

  • 使用OC写算法之汉诺塔问题

    汉诺塔问题简介 汉诺塔问题简单来说是根据一个印度的传说形成的数学问题,有三根杆子A,B,C。A杆上有N个(N>1)...

  • 数据结构算法之递归和栈结构

    递归 程序调用自身的编程技巧称为递归简单案例:n的阶乘 汉诺塔 汉诺塔问题描述:3个柱为a、b、c,圆盘最初在a柱...

  • 汉诺塔递归求解

    相关链接 汉诺塔的移动也可以看做是递归函数。我们对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为:如果a...

  • C语言-汉诺(Hanoi)塔问题-递归实现

    问题描述:汉诺(Hanoi)塔问题-递归实现 源代码: 运行结果: 程序算法: 程序参数: 输出大小: 149.3...

网友评论

      本文标题:c语言求解循环汉诺塔问题

      本文链接:https://www.haomeiwen.com/subject/kxllprtx.html