这是一个经典的动态规划问题,可以使用动态规划的方法求解。
设arr[i]表示走上第i级楼梯的不同走法数量。则对于第i级楼梯,可以从第i-1级楼梯跨1步走上来,也可以从第i-2级楼梯跨2步走上来。因此,走上第i级楼梯的走法数量等于走上第i-1级楼梯和第i-2级楼梯的走法数量之和。
- #include
- #include
-
- void main()
- {
- int n, m, i,j,*arr;
- while (~scanf_s("%d", &n))
- {
- for (i = 0; i < n; i++)
- {
- scanf_s("%d", &m);
- arr = (int*)malloc(m * sizeof(int));
- for (j = 0; j < m; j++)
- {
- if (j < 3)arr[j] = j;
- else arr[j] = arr[j - 1] + arr[j - 2];
- }
- printf("%d\n", arr[j-1]);
- }
- }
- }