HDU-1016 prime ring problem

来源:互联网 发布:淘宝开店赚钱吗 编辑:程序博客网 时间:2024/04/19 18:00

以前做过此题,几天又复习一遍。

/* * HDU-1016 prime ring * mike-w * 2011-8-30 * -------------------------------------- * i met this problem for the second time * practice DFS * -------------------------------------- * 看来用C提交比较不靠谱,还得GCC * 题目的样例输出把最后一行的换行符省略了 * 害得我好几次格式错误 */#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXSIZE 22char tag[MAXSIZE];char prm[MAXSIZE];int rec[MAXSIZE];int n,ccase;int print(int nele){int i;for(i=1;i<=nele;i++)printf("%d%c",rec[i],(i==nele?'\n':' '));return 0;}int search(int cnt){int i;if(cnt==n){for(i=1;i<=n;i++)if(!tag[i]&&prm[i+rec[cnt-1]]&&prm[i+1]){rec[cnt]=i;print(n);}}elsefor(i=1;i<=n;i++)if(!tag[i]&&prm[i+rec[cnt-1]]){rec[cnt]=i;tag[i]=1;search(cnt+1);tag[i]=0;}return 0;}int main(void){ccase=1;prm[2]=prm[3]=prm[5]=prm[7]=prm[11]=prm[13]=prm[17]=prm[19]=prm[23]=prm[29]=prm[31]=prm[37]=prm[41]=1;#ifndef ONLINE_JUDGEfreopen("1016.in","r",stdin);#endifwhile(scanf("%d",&n)!=EOF){memset(tag,0,sizeof(tag));tag[1]=1;rec[1]=1;printf("Case %d:\n",ccase++);search(2);putchar('\n');}return 0;}


 

原创粉丝点击