Lee • 18小时前
using namespace std; const int nsize = 17; long long dp[1 << nsize][nsize]; int s[nsize];
int main() {
int n, k;
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> s[i];
}
dp[0][0] = 1;
for (int i = 1; i < (1 << n); i++) {
for (int j = 1; j <= n; j++) {
if (i & (1 << (j - 1))) {
int x = i ^ (1 << (j - 1));
for (int l = 0; l <= n; l++) {
if (l == 0 || (abs(s[l] - s[j]) > k) && (i & (1 << (l - 1)))) {
dp[i][j] += dp[x][l];
}
}
}
}
}
long long ans = 0;
for (int i = 1; i <= n; i++) {
ans += dp[(1 << n) - 1][i];
}
cout << ans;
return 0;
}
评论:
请先登录,才能进行评论