AC

Lee  •  18小时前


include

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;

}


评论:

请先登录,才能进行评论