每日刷题计划-2-5

133 阅读3分钟

「这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战

BC117 小乐乐走台阶

描述

小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?

输入描述:

输入包含一个整数n (1 ≤ n ≤ 30)

输出描述:

输出一个整数,即小乐乐可以走的方法数。

示例1

输入:

2

复制

输出:

2

复制

示例2

输入:

10

复制

输出:

89

复制

#include<stdio.h>
int Fib(int n)
{
    return n > 2 ? Fib(n-1) + Fib(n-2):n;
}
int main()
{
    //走台阶问题实际是斐波那契数列问题
    int n = 0;
    //输入n的值
    scanf("%d",&n);
    int ret = Fib(n);
    printf("%d\n",ret);
    return 0;
}

BC118 小乐乐与序列

描述

老师给了小乐乐一个正整数序列,要求小乐乐把这个序列去重后按从小到大排序。但是老师给出的序列太长了,小乐乐没办法耐心的去重并排序,请你帮助他。

输入描述:

第一行包含一个正整数n,表示老师给出的序列有n个数。接下来有n行,每行一个正整数k,为序列中每一个元素的值。(1 ≤ n ≤ 105,1 ≤ k ≤ n)

输出描述:

输出一行,为去重排序后的序列,每个数后面有一个空格。

示例1

输入:

4
2
2
1
1

复制

输出:

1 2 

复制

示例2

输入:

5
5
4
3
2
1

复制

输出:

1 2 3 4 5 

复制

#include<stdio.h>
int main()
{
    //想法:把n个叔祖分别放到数组对应下标的位置,把数组初始化为0
    //因为输入的k>0 所以打印时把不为0的数顺序打印出来
    int n = 0;
    scanf("%d",&n);
    int arr[100001] = {0}; //n:[1,100000],下标要对应,所以数组大小为10001
    int i = 0;
    //输入数据
    int tmp = 0;
    for(i = 0; i <n; i++)
    {
        scanf("%d",&tmp);
        arr[tmp] = tmp;
    }
    //把数组不为0的数据打印出来
    //这里不能写成i<n  要遍历整个数组,把不为0的数打印出来
    for(i = 0; i < 100000; i++)
    {
        if(arr[i] != 0)
        {
            printf("%d ",arr[i]);
        }
    }
    return 0;
}

BC119 小乐乐与字符串

描述

在庆祝祖国母亲70华诞之际,老师给小乐乐出了一个问题。大家都知道China的英文缩写是CHN,那么给你一个字符串s,你需要做的是统计s中子序列“CHN”的个数。

子序列的定义:存在任意下标a < b < c,那么“s[a]s[b]s[c]”就构成s的一个子序列。如“ABC”的子序列有“A”、“B”、“C”、“AB”、“AC”、“BC”、“ABC”。

输入描述:

输入只包含大写字母的字符串s。(1 ≤ length ≤ 8000)

输出描述:

输出一个整数,为字符串s中子序列“CHN”的数量。

示例1

输入:

CCHNCHN

复制

输出:

7

复制

示例2

输入:

CCHNCHNCHNCHN

复制

输出:

30

复制