题目描述: 你要进行一个行程为7000KM的旅行,现在沿途有些汽车旅馆,为了安全起见,每天晚上都不开车,住在汽车旅馆,你手里现在已经有一个旅馆列表,用离起点的距离来标识,如下:
0 990 1010 1970 2030 2940 3060 3930 4060 4970 5030 5990 6010 7000
但在出发之前可能还要增加一些旅馆。
现在旅行社为了节约成本要求每天至少行驶A公里,国家交通部门为了安全起见要求每天最多只能行驶B公里。
你想知道一共有多少种住宿方案。
输入描述: 第一行输入A,
第二行输入B,
第三行输入N(0≤N≤20),表示在出发之前又新增N个汽车旅馆;
接下来N行,每行一个整数m,表示旅馆离起点的距离(0<m<7000)。
注意:没有任意两个旅馆在同一位置。
输出描述: 输出一共有多少种住宿方案。
输入样例: 500 1500 0 输出样例: 64
90 Wrong Answer
# 状态分数 耗时 内存占用
#1 Accepted10 2ms 396 KiB
#2 Accepted10 2ms 448 KiB
#3 Accepted10 2ms 400 KiB
#4 Accepted10 2ms 508 KiB
#5 Accepted10 2ms 512 KiB
#6 Accepted10 2ms 428 KiB
#7 Accepted10 2ms 384 KiB
#8 Accepted10 2ms 392 KiB
#9 Accepted10 2ms 512 KiB
#10 Wrong Answer0 2ms 512 KiB
代码
#include <bits/stdc++.h>
using namespace std;
int aw,bw,n,f[100];
int a[100]={0,0,990,1010,1970,2030,2940,
3060,3930,4060,4970,5030,5990,6010,7000};
bool cmp(int x,int y)
{
return x<y;
}
int main()
{
cin>>aw>>bw>>n;
n=n+14;
for(int i=15;i<=n;i++) cin>>a[i];
f[1]=1;
sort(a+1,a+n+1,cmp);
for(int i=2;i<=n;i++)
for(int j=1;j<=i-1;j++){
if(a[i]-a[j]>=aw&&a[i]-a[j]<=bw) f[i]=f[i]+f[j];
}
cout<<f[n];
}
不是我样例过了一切举例都过了,怎么会只有90?!
哪位大佬帮忙看看