首页 > 其他 > 详细

洗牌j

时间:2017-01-19 08:42:21      阅读:253      评论:0      收藏:0      [点我收藏+]
 1 #include <iostream>
 2 using namespace std;
 3 #define SIZE 12
 4 int data[SIZE];
 5 int data1[SIZE];
 6 int n;
 7 int minstep;
 8 void xipai(int m);
 9 bool shun();
10 void dfs(int step);
11 int main()
12 {
13     freopen("in.txt","r",stdin);
14     minstep=6;
15     while(scanf("%d",&n)!=EOF)
16     {
17         for(int i=0;i<n;i++)
18         {
19             cin >>data[i];
20             data1[i]=data[i];
21         }
22         dfs(0);
23         cout <<minstep<<endl;
24     }
25     return 0;
26 }
27 void xipai(int m)
28 {
29     int data2[SIZE];
30     for(int i=0;i<n;i++)
31         data2[i]=data1[i];
32     int j=0;
33     for(int i=m;i>0;i--)
34     {
35         if(i>n/2)
36         {
37             data2[n/2-j-1+n/2]=data1[n/2-j-1];
38             data2[n/2+j-n/2]=data1[n/2+j];
39         }
40         else
41         {
42             data2[n/2-j-1+i]=data1[n/2-j-1];
43             data2[n/2+j-i]=data1[n/2+j];
44         }
45         j++;
46         if(j>n/2-1)
47             break;
48     }
49     for(int i=0;i<n;i++)
50         data1[i]=data2[i];
51 }
52 bool shun()
53 {
54     if(data1[0]<data1[1])
55     {
56         for(int i=0;i<n-1;i++)
57         {
58             if(data1[i]>data1[i+1])
59                 return false;
60         }
61     }
62     if(data1[0]>data1[1])
63     {
64         for(int i=0;i<n-1;i++)
65         {
66             if(data1[i]<data1[i+1])
67                 return false;
68         }
69     }
70     return true;
71 }
72 void dfs(int step)
73 {
74     if(shun())
75     {
76         if(step<minstep)
77             minstep=step;
78         return;
79     }
80     if(step==5)
81         return;
82     int temp[SIZE];
83     for(int i=0;i<n;i++)
84         temp[i]=data1[i];
85     for(int i=0;i<n;i++)
86     {
87         xipai(i);
88         dfs(step+1);
89         for(int j=0;j<n;j++)
90             data1[j]=temp[j];
91     }
92 }

 

洗牌j

原文:http://www.cnblogs.com/jintg/p/6305359.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!