75分求调!
原题:
游戏规则: 1.玩家初始位置在1号密室; 2.每次玩家可以进入右边的一个密室,也可以跳过一个密室进入下个密室(如:当玩家当前在3号密 室,他可以进入4号密室也可以进入5号密室); 3.有毒气的密室不能进入需要避开。 编程实现: 给定三个正整数X,Y,M(X<Y<M≤100),表示三个密室编号。X号密室和Y号密室有毒气泄漏,不能进入,玩家需要进入到M号密室。按照游戏规则进入M号密室有多少种路线方案。 例如:X=2,Y=4,M=7,进入M号密室有2种路线方案,分别是1->3->5->6->7路线和1->3->5->7路线。
输入 输入三个正整数X,Y,M(X<Y<M),X和Y表示有毒气密室编号,M表示需要进入的密室编号,且三个正整数之间以英文逗号隔开
输出 输出进入M号密室有多少种路线方案
样例输入 2,4,7
样例输出 2
这一题我认为是斐波那契加递推,代码如下
#include <bits/stdc++.h>
using namespace std;
int x,y,m,n[101];
int main(){
scanf("%d,%d,%d",&x,&y,&m);
for (int i=1;i<=m;i++){
if (i==x || i==y){
continue;
}
else{
if (n[i-1]==0){
n[i]=1;
}
else if (n[i-1]==1 && n[i-2]==0) n[i]=1;
else{
n[i]=n[i-1]+n[i-2];
}
}
}
cout<<n[m];
}
请问思路哪里不对?请各位大佬指出