题目
步步高升 SSL 1284 1284 1284
题意
春节的时候TENSHI去逛花市。她来到一个卖盆竹的摊位,看到一盆叫做“步步高升”的盆竹。“步步高升,步步高升……”学习就是要一步一步来,不能急,要打好基础。在稳固的基础上才谈得上步步高升!
TENSHI若有所思。她看到这盆东西好意头,于是想买下。谁知一问价钱,“不贵不贵,才2XXRMB。”TENSHI差点没昏倒,囊中羞涩嘛。但是TENSHI还是很想买下来,于是她就在一旁观察。
观察了一段时间,她发现这个卖盆竹的人和别人杀价很有规律。
设此人第i次报价为Wi元,那么他第i+1次报的价格为Wi-A或Wi -B。到了最后,TENSHI以Z元成交,高高兴兴的回家去了。
任务
求TENSHI把盆竹的价格由W1元杀到Z元的方法总数。
输入
256 88
5 9
输出
3889832
无解题思路
自行理解
题解
#include<bits/stdc++.h>
using namespace std;
long long m,n,a,b,sum;
void dfs(long long m) {
if(m==n) {//当m的值减到为n的值时,递归边界
sum++;//统计
return;//减少判断,直接返回,可以不写
}
if(m<n)//考虑超出范围,递归边界,以防一直减下去,从而进入死循环,可以不写
return;//减少判断,直接返回,可以不写
if(m>n) {//以防一直减下去,从而进入死循环
dfs(m-a);//这样写可以回溯时m值不变,将m减到n时
dfs(m-b);//这样写可以回溯时m值不变,将m减到n时
}
}
int main() {
cin>>m>>n>>a>>b;//输入数据
dfs(m);//进入递归
cout<<sum;//输出结果
return 0;
}