array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 POJ_2488_A Knight's Journey - 爱码网

http://poj.org/problem?id=2488 

题意:
给出棋盘的大小,判断马能否不重复的走过所有格;并记录下来按字典序排列的第一种路径;
经典的骑士游历问题,很明显是DFS一条路走到底吗。
注意事项:
1:题目要求要字典序输出,那么在搜索的时候按照下面的顺序得到的第一条道路就是
字典序。
2:行数为p是数字,列数为q是字母;

POJ_2488_A Knight's Journey 

 

 1 # include <stdio.h>
 2 # include <string.h>
 3 # include <algorithm>
 4 using namespace std;
 5 typedef struct node //记录位置留作输出
 6 {
 7     int row;
 8     char col;
 9 }location;
10 int p,q; //字母是q
11 int x,y,t,test;
12 bool chess['Z'+1][27];
13 void next_step(int i,int j,int num) //i,j是骑士在棋盘中的位置
14 {
15     switch(num) //8个是骑士可以走的8个方向;
16     {
17         case 1: {x=i-1; y=j-2; break;}     //注意这个尝试跳的顺序不能错      
18         case 2: {x=i+1; y=j-2; break;}     //因为题目要求是字典序lexicographically输出   
19         case 3: {x=i-2; y=j-1; break;}     //这个顺序错了,必定WA   
20         case 4: {x=i+2; y=j-1; break;}  
21         case 5: {x=i-2; y=j+1; break;}  
22         case 6: {x=i+2; y=j+1; break;}  
23         case 7: {x=i-1; y=j+2; break;}  
24         case 8: {x=i+1; y=j+2; break;}  
25     }
26     return ;
27 }
28 bool DFS(location *way,int i,int j,int step)
29 {
30     chess[i][j]=true;
31     way[step].row=i;
32     way[step].col=j;
33     if(step==way[0].row)
34         return true;
35     for(int k=1;k<=8;k++)//骑士最多可以跳8个方向
36     {
37         next_step(i,j,k); //下一步要走的坐标
38         int ii=x,jj=y;
39         if(!chess[ii][jj] && ii>=1 &&ii<=p && jj>='A' && jj<='A'+q-1)
40             if(DFS(way,ii,jj,step+1)) //如果跳的方向调用函数返回的是1,那么说明已找到返回1;
41                 return true;
42             //刚开始这个if肯定是不执行的,只有找到最低层的时候满足step==way[0].row
43             //然后依次往上返回 true true。
44     }
45     chess[i][j]=false; //执行到这里说明前面的8步不符合要求,
46     return false;      //即当前位置错误,擦除记录返回上一步继续。
47 }
48 void output()
49 {
50     printf("Scenario #%d:\n",t-test);
51     printf("impossible\n\n");
52     return ;
53 }
54 int main()
55 {
56     int i,j,k;
57     scanf("%d",&test);
58     t=test;
59     while(test--)
60     {
61         memset(chess,false,sizeof(chess));
62         scanf("%d%d",&p,&q);
63         if(p==1 && q==1) //缩小查找范围
64         {
65             printf("Scenario #%d:\n",t-test);
66             printf("A1\n\n");
67             continue;
68         }
69         if(p*q>26 || p>=9 || q>=9 || p<=2 || q<=2)
70         {
71             output();
72             continue;
73         }
74         location way[200];
75         way[0].row=p*q;
76         bool flag=false;
77         for(j='A';j<'A'+q;j++)
78         {
79             for(i=1;i<=p;i++)
80             {
81                 if(DFS(way,i,j,1))
82                 {
83                     printf("Scenario #%d:\n",t-test);
84                     for(k=1;k<=way[0].row;k++)
85                         printf("%c%d",way[k].col,way[k].row);
86                     printf("\n\n");
87                     flag=true;
88                     break;
89                 }
90             }
91             if(flag)
92                 break;
93         }
94         if(!flag)
95             output();
96     }
97     return 0;    
98 }
View Code

相关文章: