1. 老曹骑士 (Standard IO)

Time Limits: 1000 ms Memory Limits: 65536 KB Detailed Limits

Description

  我们的主角——老曹陨落于国际象棋棋盘,成为了一位老曹骑士,于是,他开始走“日”字型路线。
  在一张N*N的棋盘上,有K只邪恶的河蟹,骑士曹现在要消灭这些河蟹。
  要求曹从任意一只河蟹出发,通过他“日”字型的跳跃,到达这K个点至少一次,并最终回到起点。
  现在已知棋盘的大小N,和这K只河蟹的位置(棋盘的左上角坐标记为(1,1),右下角坐标记为(N,N)。
  询问:曹最少要跳多少步。

Input

  第一行:两个整数,N,K(4<=N<=20,1<=K<=10)
  接下来K行:每行两个整数X,Y,表示河蟹所在位置。

Output

  一个整数,表示曹所需要条的最少步数。

Sample Input

8 3

2 3

4 5

6 7

Sample Output

12

正解BFS求出每两个河蟹之间的距离,用DFS求最小值。

我的方法:用深搜(记忆化搜索)求出每两个河蟹之间的距离,用全排列求出每种情况下的值,输出最小值即可。
(谢绝co标)code:

usesmath;
vari,j,n,k,l,s,ans:longint;hx:array[1..10,1..2]of longint;//河蟹位置map,a:array[0..21,0..21]of longint;//棋盘和记忆化数组f:array[1..10,1..10]of longint;//记录每两个河蟹之间的距离b:array[1..10]of boolean;//全排列标记sx:array[0..10]of longint;//跳顺序枚举(全排列)fx:array[1..8,1..2]of longint=((1,2),(2,1),(2,-1),(1,-2),(-1,-2),(-2,-1),(-2,1),(-1,2));//老曹可以跳的八个方向
procedure get(x,y:Longint);//求每两个河蟹之间的距离
vart1,t2,j:longint;
beginif i<>map[x,y] thenbeginif map[x,y]>=1 thenbeginif f[i,map[x,y]]>a[x,y]thenbeginf[i,map[x,y]]:=a[x,y];f[map[x,y],i]:=a[x,y];exit;end;end;end;for j:=1 to 8 dobegint1:=x+fx[j,1];t2:=y+fx[j,2];if (t1>=1)and(t1<=n)and(t2>=1)and(t2<=n)thenif a[t1,t2]>a[x,y]+1 thenbegina[t1,t2]:=a[x,y]+1;get(t1,t2);end;end;
end;
procedure dg(x:longint);//全排列
vari:longint;
beginif x-1=k thenbegins:=0;for i:=1 to k-1 dobegins:=s+f[sx[i],sx[i+1]];end;s:=s+f[sx[i+1],sx[1]];ans:=min(ans,s);end;for i:=1 to k dobeginif b[i]=false thenbegininc(sx[0]);sx[sx[0]]:=i;b[i]:=true;dg(x+1);dec(sx[0]);b[i]:=false;end;end;
end;
beginreadln(n,k);if k=1 then begin   writeln(0);exit;end;for i:=1 to k dobeginreadln(l,s);hx[i,1]:=l;hx[i,2]:=s;map[l,s]:=i;end;fillchar(f,sizeof(f),100);for i:=1 to k dobeginfillchar(a,sizeof(a),102);a[hx[i,1],hx[i,2]]:=0;get(hx[i,1],hx[i,2]);end;ans:=maxlongint;dg(1);writeln(ans);
end.

1313. 老曹骑士 TJ相关推荐

  1. 我的朋友老曹,居然用数据工具搞了这么多事

    U-Time巡回开启,仅3站(北京/深圳/广州),名额有限!-速戳底部"阅读原文"或者扫二维码抢位- 作者:梁旭鹏,人人都是产品经理专栏作家,<数据产品经理修炼手册>作 ...

  2. 【SDCC讲师专访】全栈工匠老曹:如何去认识全栈架构师?

    2016年11月18日-20日,由CSDN重磅打造的年终技术盛会,SDCC 2016中国软件开发者大会将在北京举行,大会面向国内外的中高端技术人员,聚焦最前沿技术及一线的实践经验,从而助力企业的技术升 ...

  3. 老曹眼中的研发管理二三事

    这是在gitchat上的第一次分享,中生代联手gitchat在做研发管理的专题活动,作为先锋,抛砖引玉. 关于管理,必然会谈到业界先贤德鲁克先生对管理的定义. 管理就是界定企业的使命,并激励和组织人力 ...

  4. 硬核干货,老曹解密“语音交互”背后的黑科技!

    点击▲关注 "中生代技术"   给公众号标星置顶 更多精彩技术内容 第一时间直达 第 6 期出席<大咖来了>直播栏目的嘉宾是百度 DuerOS 首席布道师曹洪伟,进行了 ...

  5. 老曹眼中的“团队管理”

    浮游半生,20多年的IT生涯,一个互联网的老兵,在儿子学琴的时候偷得片刻清闲,在时断时续的钢琴曲中整理一下思绪,记下之言片语. <天下无贼>中的黎叔说,"21世纪最重要的是什么- ...

  6. [2021.8纪中集训Day14]

    文章目录 1312. 老曹的忧郁 题目 思路 代码 1313. 老曹骑士 题目 思路 代码 1314. 稳定的数字 题目 思路 代码 封锁阳光大学 题目 题目描述 输入格式 输出格式 输入输出样例 说 ...

  7. Bootstrap可以这样学-曹领雄-专题视频课程

    Bootstrap可以这样学-123人已学习 课程介绍         课程结构采用思维导图制作,分类清楚,逻辑清晰.可以很直观的了解到所有的Bootstrap的所有内容,相对于官方文档,更适合初学B ...

  8. 缓存为王:老码农眼中的分布式缓存

    本文来自作者 老曹 在 GitChat 上分享 「缓存为王:老码农眼中的分布式缓存」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 世界是相似的,在商业的世界中,有一句经典语录叫 &quo ...

  9. 10行 python 代码做出哪些酷炫的事情?

    来源 | Python小二 Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的 ...

最新文章

  1. 双代号网络图节点编号原则_一表多图(表格/横道图/网络图)让计划编制效率提高10倍...
  2. 日志规范之了解slf4j
  3. HQL多对多的查询语句
  4. pip默认使用国内镜像地址
  5. Could not autowire. No beans of 'xxxx' type found的错误提示
  6. OS复习——设备管理习题
  7. java设计模式 外观,精掌握Java设计模式之外观模式(10)
  8. Javascript特效:瀑布流
  9. rmd文件怎么转换html文件,如何将Rmd文件的html输出向左对齐
  10. 笔记本电脑风扇转速测试软件,笔记本温度查看和风扇转速调节工具
  11. SQL经典50题练习
  12. c#反编译生成DLL过程
  13. 解决IDEA中leetcode插件出现中文乱码问题
  14. 数学建模方法——皮尔逊相关系数及其显著性检验 (Pearson correlation coefficient)
  15. Git ssh fingerprint不一致
  16. 计算机三级嵌入式系统知识点考查(易错)
  17. 解决在HD Audio模式下Windows系统前置面板耳机无声音的问题
  18. 点击给导航条加背景颜色
  19. n服登陆显示从服务器断开,魔兽世界N服卡认证、断开连接的解决方法
  20. C语言编程>第二十四周 ① 请补充fun函数,该函数的功能是判断一个数是否为素数。该数是素数时,函数返回字符串 “yes!”,否则函数返回字符串 “no!”,并在主函数中输出。

热门文章

  1. 使用JavaScript进行销毁:操作指南
  2. HTTP响应的内容类型之Content-Type
  3. 特斯拉竞争对手Rivian获7亿美元融资 亚马逊领投
  4. 学渣的刷题之旅 leetcode刷题 27.移除元素
  5. 我的秋招经验分享(内附校招交流群)
  6. 一款基本靠谱,略微出圈的2021十大科技预测
  7. 拯救者R9000X显卡驱动安装
  8. 2021-01-30关于IE浏览器被篡改主页无法修改的解决办法
  9. 用itunes把iphoto已导入到iphone的照片怎么删除?
  10. 移动端系统:scroll,fixed