c语言上楼梯问题
答案:2 悬赏:20
解决时间 2021-03-08 01:31
- 提问者网友:骨子里的高雅
- 2021-03-07 05:28
c语言上楼梯问题
最佳答案
- 二级知识专家网友:一袍清酒付
- 2021-03-07 05:48
我暂时保留我的看法!
全部回答
- 1楼网友:深街酒徒
- 2021-03-07 06:11
例如:将军住在5楼,将军能上或者下5次楼,现在在1楼, 那么将军将回不到寝室啦,为什么?我也不知道。>>
因为他必须上下楼梯5次, 但是他上楼4次就可以到5楼了,还1次要么下楼要么上楼,所以不可到5楼.
#include <stdio.h>
int m, n, k, count = 0;
void func(int sum, int level){
if(level == n ) {
if(k + sum == m)count ++;
return ;
}
if(k + sum - 1 > 0){
func(sum - 1, level + 1);
}
if(k + sum + 1 < 101){
func(sum + 1, level + 1);
}
}
int sum(int m, int n, int k){
int dv = m - k,;
if(dv < 0){
dv = dv * -1;
}
if(dv > n) return 0;
if(dv == 0) dv = 1;
if((n % dv % 2) == 1) return 0;
func(0, 0);
return count;
}
int main(){
while(scanf("%d %d %d", &m, &n, &k) > 0){
printf("%d\n", sum(m, n, k));
count = 0;
}
return 1;
}
追问:对不起,您的答案也错了,
不过,能请您说一下您的思路吗
追答:假设M>K
N可能大於 M - K 所以 上楼过程中需要下楼才可能到M楼
我将上楼当作1下楼当作-1,比如这一组数据,M = 5 K = 1 N = 6,它可以上到5楼
其中一种上楼的方法是 [1, 1, 1, 1, 1, -1] 但是如果你在1楼的就只能上楼 所以这组数据有5种方法上楼
1. 首先判断能不能到M楼 N <=|M- K|就不说了。N > |M- K|多馀的上下楼次数中上楼次数应该等於下楼次数所以 N % |M - K|必须等於0
2.向前走一步,要么上要么下,但是在1楼不能下 在100楼不能上
3.上楼 重复2 下楼重复2 直到 level = N 即走完上下楼次数 此时判断是否在M楼
因为他必须上下楼梯5次, 但是他上楼4次就可以到5楼了,还1次要么下楼要么上楼,所以不可到5楼.
#include <stdio.h>
int m, n, k, count = 0;
void func(int sum, int level){
if(level == n ) {
if(k + sum == m)count ++;
return ;
}
if(k + sum - 1 > 0){
func(sum - 1, level + 1);
}
if(k + sum + 1 < 101){
func(sum + 1, level + 1);
}
}
int sum(int m, int n, int k){
int dv = m - k,;
if(dv < 0){
dv = dv * -1;
}
if(dv > n) return 0;
if(dv == 0) dv = 1;
if((n % dv % 2) == 1) return 0;
func(0, 0);
return count;
}
int main(){
while(scanf("%d %d %d", &m, &n, &k) > 0){
printf("%d\n", sum(m, n, k));
count = 0;
}
return 1;
}
追问:对不起,您的答案也错了,
不过,能请您说一下您的思路吗
追答:假设M>K
N可能大於 M - K 所以 上楼过程中需要下楼才可能到M楼
我将上楼当作1下楼当作-1,比如这一组数据,M = 5 K = 1 N = 6,它可以上到5楼
其中一种上楼的方法是 [1, 1, 1, 1, 1, -1] 但是如果你在1楼的就只能上楼 所以这组数据有5种方法上楼
1. 首先判断能不能到M楼 N <=|M- K|就不说了。N > |M- K|多馀的上下楼次数中上楼次数应该等於下楼次数所以 N % |M - K|必须等於0
2.向前走一步,要么上要么下,但是在1楼不能下 在100楼不能上
3.上楼 重复2 下楼重复2 直到 level = N 即走完上下楼次数 此时判断是否在M楼
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯