HDU 1016 Prime Ring Problem

时间:2023-03-09 14:42:08
HDU 1016 Prime Ring Problem

在刚刚写完代码的时候才发现我以前交过这道题,可是没有过。

后来因为不理解代码,于是也就不了了之了。

可说呢,那时的我哪知道什么DFS深搜的东西啊,而且对递归的理解也很肤浅。

这道题应该算HDU 2610 Sequence one的简化版,判重也非常简单。

其他也没有什么好说的了,直接上代码吧。

 //#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std; int prime[] = {,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,};
bool visited[];
int n, a[]; void DFS(int dep)
{
if(dep==n && prime[a[dep-] + a[]])
{
for(int i = ; i < dep-; ++i)
printf("%d ", a[i]);
printf("%d\n", a[dep-]);
return;
}
for(int i = ; i <= n; ++i)
{
if(!visited[i] && prime[a[dep-] + i])
{
visited[i] = true;
a[dep] = i;
DFS(dep + );
visited[i] = false;
}
}
} int main(void)
{
#ifdef LOCAL
freopen("1016in.txt", "r", stdin);
#endif int kase = ;
while(scanf("%d", &n) == )
{
printf("Case %d:\n", ++kase);
a[] = ;
memset(visited, false, sizeof(visited));
DFS();
puts("");
}
return ;
}

代码君