HDU1016 Prime Ring Problem

一直以为写过素数环的问题,不过今天补上,应该也不算太晚吧。

从当初的完全弄不懂DFS递归,到现在总算有了一定的概念,但也不敢说什么很溜。

前几天跑去看第一次学写素数环的时候看的博客,博主写了很多注释,几乎每句都有的那种,很详细,突然觉得自己当时好傻,很多简单的道理都不懂。

不过就算时间再倒回去,自己应该还是会坚持自己的做法吧。

感觉对那种Print a blank line after each case.的题面有时候还是会很模糊,,不清楚最后一组到底要不要再给一个空行。

按说感觉有case的话应该最后一行就不要空行了,但是这题就是个例外。

谁能懂当时的想法呢。

#include <iostream>#include <stdio.h>#include <string>#include <cstring>#include <cmath>#define N 50using namespace std;int vis[N];int a[N];int n;int fun(int x){for(int i=2;i<x;i++)if(x%i==0) return 0;return 1;}void dfs(int cur){if(cur==n+1){if(fun(a[1]+a[n])){for(int i=1;i<=n;i++)printf("%d%c",a[i],i==n?'\n':' ');}return;}for(int i=1;i<=n;i++)if(vis[i]==0 && fun(i+a[cur-1])){vis[i]=1;a[cur]=i;dfs(cur+1);vis[i]=0;}}int main(){int ca=1;while(~scanf("%d",&n)){printf("Case %d:\n",ca++);memset(vis,0,sizeof vis);a[1]=1;vis[1]=1;dfs(2);cout<<endl;}return 0;}

每一幢房子都有一种不同的颜色,

HDU1016 Prime Ring Problem

相关文章:

你感兴趣的文章:

标签云: