码迷,mamicode.com
首页 > 其他好文 > 详细

蜘蛛牌------和 上一个 戒指 差不多

时间:2016-03-09 10:47:10      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

.....然而 还是  不会  , 看别人的程序看了半天   自己 也是仅仅能模仿一下 ,   不懂到底是咋回事////////还是要看的  先附上  题目和代码技术分享

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int vis[11],p[11],bs,step;
 6 void DFS(int t) //  寻找 第一个 需要移动的  卡片
 7 {
 8     int i,j;
 9     if(t==10)    //
10     {
11         bs=step;  //  10 张牌  都找到  自己的   移动先后顺序之后记下来  跳出去 就行了
12         return ;
13     }
14     for(i=1;i<11;i++)
15     {
16         if(!vis[i])
17         {
18             for(j=i+1;j<11;j++)     //   i+1 的 原因  是  控制将较小的 放到  较大的 上面
19             {
20                 if(!vis[j])                     //没有    被用
21                 {
22                     step+=abs(p[i]-p[j]);          //  加上这一次 移动的步数
23                     if(step<bs)
24                     {
25                         vis[i]=i;            //  进去  将 牌 标记为 已用
26                         DFS(t+1);                   //  开始寻找 下一次移动的 排
27                         vis[i]=0;
28                     }
29                     step-=abs(p[i]-p[j]);
30                     break;
31                 }
32             }
33         }
34     }
35 }
36 int main()
37 {
38     int t,a;
39     scanf("%d",&t);
40     while(t--)
41     {
42         for(int i=1;i<11;i++)
43         {
44             scanf("%d",&a);
45             p[a]=i;  //  储存下来 每一张牌的位置
46             vis[i]=0;     //  没有被用的 牌 记为 0 .
47         }
48         bs=1000000;
49         step=0;
50         DFS(1);    //    开始  寻找 第一个 需要移动的 卡片
51         printf("%d\n",bs);
52     }
53 
54 }

 

蜘蛛牌------和 上一个 戒指 差不多

标签:

原文地址:http://www.cnblogs.com/A-FM/p/5257089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!