这道题和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 }
代码君

分类:

技术点:

相关文章: