第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 A-跳台阶

题目描述

  小明在坐景驰科技研发的无人车到达了目的地。
  景驰科技(JingChi.ai)是一家由人工智能技术驱动、以无人驾驶技术为核心的智能出行公司。它将打造面向中国市场的全无人驾驶。
  从无人车下来以后,小明看到了一个长长的楼梯。
  有一个n级台阶的楼梯,小明一次可以向上跳1步,两步,甚至是n步,请问小明跳到n级台阶有多少种跳法?

输入描述:

第一行输入一个整数t,代表有t组样例:( T<=30 接下来的t行,都用一个整数n,表示楼梯有n级台阶( 1<=n<=30

输出描述:

输出跳到第n级台阶有多少种跳法
示例1

输入

1
1

输出

1
解题思路:这是一道规律题:每一步从1~n中选择i步跳上台阶,使得刚好跳到第n层。其实就是求1~n中选择几个数(可以重复)与顺序有关相加等于n即可。
再讲得通俗些就是现在n3,你可以先跳1步,再跳2步到第3层,也可以先跳2步,再跳1步到第3层;可以跳3步直接到第3层,也可以分3次跳1步到第3层,按照这样的规律来找即可找出答案。
下面举4个栗子:(等号左边的数进行排列得到组合个数)
n=1时,只有一种排列组合:1=1
n=2时,有如下排列组合:
1+1=2--->1
2=2 --->1
一共2种。
n=3时,有如下排列组合:
1+1+1=3--->1
1+2=3 --->2
3=3 --->1
一共4种。
n=4时,有如下排列组合:
1+1+1+1=4--->1
1+1+2=4 --->3
2+2=4 --->1
1+3=4 --->2
4=4  --->1
一共8种。
由前几项 1 2 3 4 5 ... n
1 2 4 8 16... 2^(n-1
可知规律就是a[i]=2*a[i-1].水题。。。
AC代码:
复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 long long a[35]={0};
 4 int main()
 5 {
 6     a[1]=1;
 7     for(int i=2;i<35;++i)
 8         a[i]=a[i-1]*2;
 9     int t,n;
10     cin>>t;
11     while(t--){
12         cin>>n;
13         cout<<a[n]<<endl;
14     }
15     return 0;
16 }
复制代码
 
posted @   霜雪千年  阅读(656)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示