思路
果断dp!!!
dp[i]表示第i远的旅店到终点的路程数.那么,若j(j<i)可以到达i,就将dp[j]加上dp[i].
过于简单,不过多解释.
时间复杂度:O(n2). 空间复杂度:O(n).Code
#include#include using namespace std;int a[50]={0,990,1010,1970,2030,2940,3060,3930,4060,4970,5030,5990,6010,7000};int dp[50];int A,B,n;int main(){ cin>>A>>B>>n; for(int i=1;i<=n;i++) { cin>>a[13+i]; } n+=13; sort(a+1,a+n+1); dp[n]=1; for(int i=n;i>=0;i--) { for(int j=i+1;j<=n;j++) { if (a[j]-a[i]>=A&&a[j]-a[i]<=B) dp[i]+=dp[j]; } } cout< <