美文网首页
2019-06-07YTUOJ 算法/递归

2019-06-07YTUOJ 算法/递归

作者: 狐二丶 | 来源:发表于2019-06-08 10:20 被阅读0次
--------------------------------
Author : ShawnDong
updateDate :2019.6.8
Blog : ShawnDong98.github.io
--------------------------------

3178: 少校吃小炒:少校学长是一个喜欢吃小炒的人,每次他都会叫上几个同学走向七餐的4楼,尝遍各式各样的小炒。而且少校学长还有大长腿呢。他每次都不坐电梯,在他上楼的时候每次可以走1级或2级台阶。现在请你输入台阶的数目,求出他能走到的不同走法数。

typedef  long long ll;

ll HaveLunch(ll steps){
    ll current = 1;
    ll last = 1;
    ll beforelast = 1;
    for(int i=2; i<=steps; i++){
        current = last + beforelast;
        beforelast = last;
        last = current;
    }
    return current;

}

int main(){
    int n;
    while(cin >> n && n!=0){
        ll sum = HaveLunch(n);
        cout << sum << endl;
    }
    return 0;
}

3198: C 递归函数--进制转换(十进制转二进制)

void conversion(int n); //将n转换为二进制输出的递归函数声明
int main()
{
    int a;
    scanf("%d",&a);
    conversion(a) ; //将n转换为二进制输出
    return 0;
}

void conversion(int n){
    stack<int> SS;
    if(n == 0) cout << 0;
    while(n!=0) {
        SS.push(n % 2);
        n /= 2;
    }

    while(!SS.empty()){
        cout << SS.top();
        SS.pop();
    }
}

3240: 第39级台阶:小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。

typedef long long ll;

int count=0;

void Fun(int stair_S,int step_S)
{   //stari用于表示剩余的楼梯的层数,当等于0时停止递归
    //step是走过的步数,用来判断是否是偶数,是否符合要求
    if(stair_S<0)return;
    if(stair_S==0)  //39节楼梯全部走完
    {
        if(step_S%2 == 0)count++;
        return;
    }
    Fun(stair_S-1,step_S+1);    //这一步走了一个台阶
    Fun(stair_S-2,step_S+1);    //这一步走了两个台阶
}


int main() {

    Fun(39,0);
    cout<<count<<endl;
    return 0;
}

3241: 奇怪的比赛:某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:

每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。

每位选手都有一个起步的分数为10分。

某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?

如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。

你的任务是算出所有可能情况。每个答案占一行。(将每一个答案看成二进制数,答案由大到小排列)

typedef long long ll;

int a[11] = {0};

int Compete(int n, int Score){

    if(n==11){
        if(Score == 100){
            for(int i=1; i<11; i++){
                cout << a[i];
            }
            cout << "\n";
        }
        return 0;
    }
    a[n] = 1;
    Compete(n+1, Score * 2);
    a[n] = 0;
    Compete(n+1, Score - n);

}

int main(){

    Compete(1, 10);

    return 0;
}

相关文章

  • 2019-06-07YTUOJ 算法/递归

    -------------------------------- Author : ShawnDong updat...

  • 快速幂模板

    递归算法 非递归算法

  • python递归算法、尾递归算法及优化

    文章概述 递归算法和尾递归概述递归算法的优化 递归算法 介绍:递归算法是计算机编程领域非常重要的一种算法,采用分而...

  • C++ 递归算法

    递归算法,尾递归算法求阶乘!

  • Java递归算法详解

    递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的...

  • 矩阵链乘法

    递归算法: 迭代算法: 分析 递归算法:规模为n的问题,有n个递归,每个递归又有相应矩阵个数个递归,故T(n)=T...

  • 【Python】(十一)从汉诺塔看Python中的递归问题

    递归的原则 递归算法必须具有基本情况。 递归算法必须改变其状态并向基本情况靠近。 递归算法必须以递归方式调用自身 ...

  • 一、算法

    目标 递归算法查找算法算法分析十大排序算法 递归算法 什么是递归递归,在数学与计算机科学中,是指在函数的定义中使用...

  • 欧几里得算法

    非递归算法 默认输入 m>=n 递归算法

  • 递归、回溯、分治

    递归 (1)子集 方式一:递归算法 方式二:位运算算法 (2)子集II 方法一:递归算法 方法二:位运算 (3)组...

网友评论

      本文标题:2019-06-07YTUOJ 算法/递归

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