hdu 1016(dfs+dp)
来源:互联网 发布:详情页美工 编辑:程序博客网 时间:2024/06/06 09:08
(1)这道题非常类似于N皇后问题,使用的是深度优先搜索方法
(2)虽然说打印要求是按照顺时针和逆时针顺序打印,其实按照从小到大的搜索顺序搜索后的结果就是符合输出顺序的。
(3)由于是20以内的数字,所以判断质数的方法是直接打表后一个简单的循环判断一下是否为质数
(4)程序中mark数组是为了标记某个数字是否使用过了,num数组存储的是数字链表的存储顺序。
#include<stdio.h>#include<string.h>#define MAX 25int a[]={2,3,5,7,11,13,17,19,23,29,31,37};int mark[20];int ans[20];int n;void Write(){int i;for(i=1;i<n;i++)printf("%d ",ans[i]);printf("%d\n",ans[i]);return ;}int Judge(int x){int i;for(i=0;i<12;i++){if(a[i]==x)return 1;}return 0;}void dfs(int pre,int pos,int num){int i;if(!mark[pos]&&Judge(pre+pos)){mark[pos]=1;num++;ans[num]=pos;if(num==n&&Judge(pos+1)){Write();mark[pos]=0;return ;}else if(num==n){mark[pos]=0;return ;}for(i=2;i<=n;i++){if(!mark[i]){dfs(pos,i,num);}}mark[pos]=0;return ;}return ;}int main(){int i,t=0;while(~(scanf("%d",&n))){t++;printf("Case %d:\n",t);for(i=2;i<=n;i++){memset(mark,0,sizeof(mark));ans[1]=1;mark[1]=1;dfs(1,i,1);}printf("\n");}return 0;}
0 0
- hdu 1016(dfs+dp)
- hdu 1978 dfs+dp
- hdu 1078(dfs+dp)
- hdu 2571 dp+dfs 命运
- HDU 3848 DFS 树形DP
- HDU 1142(SPFA+dfs+dp)
- HDU 1501 Zipper(DP,DFS)
- HDU 1501 Zipper(DP,DFS)
- hdu 1074 DFS+状态压缩DP
- hdu 2196 computer (树状DP+dfs)
- hdu 1078(dfs+dp)FatMouse and Cheese
- hdu 1074 Doing Homework 状态DP+dfs
- hdu 3681 Prison Break(dp || dfs)
- hdu 1561 树形dp+背包+dfs
- HDU-4924-Football Manager(DFS+DP)
- HDU 3709 数位dp dfs版
- hdu 2660 Accepted Necklace(dfs、dp)
- hdu 3920 状态压缩dp+dfs
- thinkphp 如何去除url中的index.php
- csdn公开课--小伙伴围观了
- 求两个数的最大公约数和最小公倍数
- Markdown基础教程
- 【HDU5540 2015 CCPC 南阳国赛A】【水题】Secrete Master Plan 矩形旋转
- hdu 1016(dfs+dp)
- 如何实现跨应用绑定Service的通信
- 【HDU5542 2015 CCPC 南阳国赛C】【DP】The Battle of Chibi n个数中恰好长度为m的单升子序列数
- SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoade
- C语言的分支语句解析
- 【HDU5551 2015 CCPC 南阳国赛L】【水题】Huatuo's Medicine 药罐串线
- 【HDU5547 2015 CCPC 南阳国赛H】【DFS】Sudoku 4x4棋盘的填充
- 【HDU5546 2015 CCPC 南阳国赛G】【DFS】Ancient Go 棋盘围杀 优化写法O(n^2)
- 一个定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目