Tyvj 1085 派对
这道题和HDU 1016的素数环那道题很相似。
虽然1A了,但写代码的过程中还是丢三落四的。
贴完代码闪人,嘿嘿
1 //#define LOCAL 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 #include <cmath> 6 using namespace std; 7 8 int n, k, cnt; 9 int a[12], b[12], vis[12]; 10 11 void DFS(int dep) 12 { 13 if(dep == n ) 14 { 15 if(abs(b[dep-1] - b[0]) <= k) 16 ++cnt; 17 return; 18 } 19 for(int i = 0; i < n; ++i) 20 { 21 if(!vis[i] && abs(a[i]-b[dep-1])<=k) 22 { 23 vis[i] = 1; 24 b[dep] = a[i]; 25 DFS(dep+1); 26 vis[i] = 0; 27 } 28 } 29 } 30 31 int main(void) 32 { 33 #ifdef LOCAL 34 freopen("1085in.txt", "r", stdin); 35 #endif 36 37 scanf("%d%d", &n, &k); 38 for(int i = 0; i < n; ++i) 39 scanf("%d", &a[i]); 40 memset(vis, 0, sizeof(vis)); 41 cnt = 0; 42 b[0] = a[0]; 43 vis[0] = 1; 44 DFS(1); 45 printf("%d\n", cnt); 46 return 0; 47 }