HDU1584 蜘蛛牌 [DFS简单题]

阅读: 评论:0

HDU1584 蜘蛛牌  [DFS简单题]

HDU1584 蜘蛛牌 [DFS简单题]

这个题一开始难哭,想不通为什么,现在大概理一理,思路如下:

1.一共只有十张牌,所以只是随机排列,并求出其中的距离之和;因为1只能接2,2接3,以此类推;

2.EG:1 4 5 2 3 所以应该先从1--->2,距离 abs = 4 - 1  = 3 ;

3.而且因为需要扫描,所以令初始标记为0,当满足要求则变为1,扫一遍后,再重新置为0,开始搜符合要求的;

PS:一开始多有借鉴大大们的代码,毕竟小白上路,不过大大们确实炒鸡厉害,在下面附上传送门:

他归类很详细,并且针对性比较强;

传送门:;


AC代码如下:

#include <bits/stdc++.h>
#define N 10010
int n;
int i ,x ,ans;
using namespace std ;
int visit[N],a[N];
int  abs(int x)
{if (x<0) return -x;else return x ;
}void dfs(int cnt , int sum )//*cnt为当前已经记录的纸牌数,sum为距离和*// 
{int i , j ; if(sum>=ans)	//*做判断,寻找满足条件*// return ;if(cnt==9){ans=sum;return ;}else {for( i = 1 ; i <10;i++){if(visit[i]==0)  //*i,j判断是否已经被记录过了。*// {visit[i]=1;for( j = i +1 ; j<=10;j++){if(visit[j]==0){dfs(cnt+1,sum+abs(a[i]-a[j]));break;}}visit[i]=0; //*重新标记*// }}}
}int main()
{cin>>n;while(n--){for(int i = 1 ; i <=10;i++){cin>>x;  //*输入牌的面值*// a[x]=i;	 //*记录当前牌的位置*// }memset(visit,0,sizeof(visit));ans=1000000;dfs(0,0);printf("%dn",ans);}return 0 ;
}

一切来之不易,珍惜,坚持。用时间换取能力~~~

本文发布于:2024-01-31 19:57:27,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170670224830989.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:蜘蛛   简单   DFS
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23