非常简单的搜索。
思路:先排序,然后,搜索枚举的时候满足A < 两个旅店 < B,然后,搜索就行了。
#include<iostream> #include<algorithm> using namespace std; #define ll long long int num[60] = { 0, 990, 1010, 1970, 2030, 2940, 3060, 3930, 4060, 4970, 5030, 5590, 6010, 7000 }; int len = 14; int a, b, n; int ans; void DFS(int k, int n){ if (k == 7000){ ++ans; return; } for (int i = n + 1; num[i] - num[n] <= b&&i<len; ++i) if (num[i]-num[n]>=a) DFS(num[i], i); } int main(){ cin >> a >> b; cin >> n; while (n--){ int x; cin >> x; num[len++] = x; } sort(num, num + len); DFS(0, 0); cout << ans << endl; }