「这是我参与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
复制