读题要认真

大吉大利,今晚吃鸡

http://www.nowcoder.com/questionTerminal/c9d9f9c60b4448eabc0569f80a3461bb

题的思路并不难,把递归程序写出来,根据汉诺塔扩展一下就行了,可以很容易找到规律 3 ^ n - 1;。
坑人的地方在于:输入到文件末尾!!!!不读题WA了好多次,下面附上递归过程的代码

#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
int ans = 0, n;
long long ans2 = 0;
void hmove(char a, char b, char c, int n){
    if(n == 0){
        return ;
    }
    hmove(a, c, b, n - 1);                     //前n - 1块从a移动到b上
    printf("%c -> %c\n", a, c);                //我自己移动一块从a -> c
    ans++;                                     //我移动了几次?
    hmove(b, a, c, n - 1);                     //最后把 n - 1块从b移动到c上
}

//只能先移动到相邻的柱子上
void hmove2(char a, char b, char c, int n){
    if(n == 0){
        return ;
    }
    hmove2(a, b, c, n - 1);                    //把前n - 1块通过b移动到c上
    ans2++;                                    //把最后一块移动到b上
    printf("%c -> %c\n", a, b);
    hmove2(c, b , a, n - 1);                  //把n - 1 块通过b移动到a上
    ans2++;                                   //把最后一块移动到c上
    printf("%c -> %c\n", b, c);
    hmove2(a, b, c, n - 1);                   //把剩下的n - 1块通过b移动到c上
}

int main(){
    scanf("%d", &n); 
    printf("普通汉诺塔\n");
    hmove('a', 'b', 'c', n);                
    printf("%d\n", ans);
    printf("本题目汉诺塔\n");
    hmove2('a', 'b', 'c', n);
    printf("%lld\n", ans2);
}

附上A的代码

#include <stdio.h>
#include <math.h>

int main(){
    int n;
    while(scanf("%d", &n) != EOF){
        long long ans = pow(3, n) - 1;
        printf("%lld\n", ans);
    }
    return 0;
}
全部评论
orz
点赞 回复 分享
发布于 2023-03-13 15:04 广东

相关推荐

05-28 23:26
河南大学 Java
双非本,刚学完Redis,项目只有外卖和点评,八股没准备,算法只有lqb省一,感觉敲的项目也是一言难尽没怎么吸收。怎么你们都有实习了
大牛之途:27急个锤子,你投日常实习最好的时间就是9,10月份,那时候暑期实习都结束了,正是缺人的时候。这份日常又能给你的暑期实习增加竞争力,暑期找的好了秋招也不怕了,都是环环相扣的
点赞 评论 收藏
分享
刘湘_passion:出国旅游?那就小心你的腰子咯
点赞 评论 收藏
分享
吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
评论
11
1
分享

创作者周榜

更多
牛客网
牛客企业服务