| 
 | 
 
 
发表于 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);
 
 - }
 
  复制代码 |   
 
 
 
 |