40分暴搜:
源代码: #include<cstdio> #include<algorithm> #define INF 1000000007 using namespace std; int N,A,B,K; long long Ans(0); void DFS(int t,int Num) //暴力也不会打的蒟蒻。 { if (Num==K) { Ans=(Ans+1)%INF; return; } for (int a=1;a<abs(t-B);a++) //用总值来表示状态,值得学习。 { if (t+a<=N) { DFS(t+a,++Num); Num--; } if (t-a>=1) { DFS(t-a,++Num); Num--; } } } int main() { scanf("%d%d%d%d",&N,&A,&B,&K); DFS(A,0); printf("%d",Ans); return 0; }
60分DP:
DP正解: