步步高升(dfs)
题目描述
结题思路
如此简单,画个图就理解了。。。
核心代码
void dfs(int k)//如此简单
{
if(k<z) return ;//过界了,不要
if(k==z)//刚刚好,赶紧拿了
{
ans++;
return ;
}
dfs(k-a);//往左边来一下
dfs(k-b);//往右边来一下
}
完整代码
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int wi,z,a,b,ans;
void dfs(int k)//如此简单
{
if(k<z) return ;//过界了,不要
if(k==z)//刚刚好,赶紧拿了
{
ans++;
return ;
}
dfs(k-a);//往左边来一下
dfs(k-b);//往右边来一下
}
int main()
{
scanf("%d%d%d%d",&wi,&z,&a,&b);
dfs(wi);
printf("%d",ans);
return 0;
}
没错,就是这么简单