|
发表于 2020-12-6 01:37:48
|
显示全部楼层
- // 现在有一个n阶楼梯,每次跳一阶或者三阶,由于跳三阶特別累,所以不能连续跳三阶,问最少多少次能恰好跳到第n阶
- #include<stdio.h>
- int main()
- {
- int i, j, n, m = 0, count = 0;
- printf("请输入楼梯阶数:");
- scanf("%d", &n);
-
- for (i = 1;i <= n;i += 3)
- {
- count += 3;
- m++;
- for (j = 1;j <= n;j++)
- {
- count++;
- m++;
- if (n - count >= 3)
- {
- break; // 要求最少,跳一阶的就得少跳,跳完一次后,中断再从跳3阶开始
- }
- else if (n - count == -1) // 如果跳完3阶后,正好到达,j 循环这一次就是多余的,得减去,比如7个台阶,只跳3次
- {
- m--;
- goto lable;
- }
- else if (n - count < 3)
- {
- while ((n - count) != 0) // 由于不能一次跳两阶,剩下两阶只能一次一次地跳,比如5个台阶,得跳3次,6个台阶,得跳4次
- {
- m++;
- count++;
- }
- goto lable;
- }
- }
- }
- lable:printf("%d\n", m);
- }
复制代码 |
|