博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1584:蜘蛛牌(DFS)
阅读量:5021 次
发布时间:2019-06-12

本文共 1072 字,大约阅读时间需要 3 分钟。

题意:要让小的牌放到大的牌上面最少移动的距离。

思路:看成让大的牌放在小的牌上面了。。。用一个标记数组vis判断该点是否移动了。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 using namespace std;13 #define INF 0x3f3f3f3f14 typedef long long LL;15 int pos[15], vis[15], ans;16 17 void dfs(int u, int sum) {18 if(u == 10) { // 如果9张牌都动过了,就得到答案了19 ans = min(ans, sum); return ;20 }21 for(int i = 1; i <= 10; i++) {22 if(!vis[i]) { // 如果这张牌没动过23 vis[i] = 1; // 让他放到比它大的牌的上面24 for(int j = i + 1; j <= 10; j++) {25 if(!vis[j]) { // 如果这张牌没动过,那么可以放26 // 相当于把i这张牌放到j这张牌上面27 dfs(u + 1, sum + abs(pos[j] - pos[i]));28 break;29 }30 }31 vis[i] = 0;32 }33 }34 }35 36 int main() {37 int t;38 scanf("%d", &t);39 while(t--) {40 memset(vis, 0, sizeof(vis));41 int a; ans = INF;42 for(int i = 1; i <= 10; i++) scanf("%d", &a), pos[a] = i;43 dfs(1, 0);44 printf("%d\n", ans);45 }46 return 0;47 }

 

转载于:https://www.cnblogs.com/fightfordream/p/6384616.html

你可能感兴趣的文章
http://lorempixel.com/ 可以快速产生假图
查看>>
工程经验总结之吹水"管理大境界"
查看>>
为什么JS动态生成的input标签在后台有时候没法获取到
查看>>
20189210 移动开发平台第六周作业
查看>>
java之hibernate之基于外键的双向一对一关联映射
查看>>
rxjs一句话描述一个操作符(1)
查看>>
第一次独立上手多线程高并发的项目的心路历程
查看>>
ServiceStack 介绍
查看>>
Centos7下载和安装教程
查看>>
无谓的通宵加班之后的思索
查看>>
S1的小成果:MyKTV系统
查看>>
从setting文件导包
查看>>
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
union和union all
查看>>
Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)
查看>>
PMD使用提醒
查看>>
Codeforces 887D Ratings and Reality Shows
查看>>
论文《A Generative Entity-Mention Model for Linking Entities with Knowledge Base》
查看>>
CentOS 6.7编译安装PHP 5.6
查看>>
Linux记录-salt分析
查看>>