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

蓝桥杯2015校园选拔赛之第四题

时间:2015-04-09 23:13:43      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。 要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:

17126425374635

当然,如果把它倒过来,也是符合要求的。

请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。

注意:只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等。

这个题可直接通过手算求得结果!

下面我把我用的递归+回溯求解代码贴上:

 1 #include<stdio.h>
 2 int num[15],f=0;
 3 void fun(int count)
 4 {
 5     if(count>6||f==1)
 6     {
 7         return;
 8     }
 9     int i,j,flag,k;
10     if((count==6)&&(f==0))
11     {
12         for(i=1;i<=14;i++)
13         {
14             printf("%d ",num[i]);
15         }
16         printf("\n");
17         f=1;
18         return;
19     }
20     k=3;
21     for(i=1;i<=6;i++)
22     {
23         flag=1;
24         for(j=1;j<=14;j++)
25         {
26             if(i==num[j])
27             {
28                 flag=0;
29                 break;
30             }
31         }
32         if(flag==1)
33         {
34             while((k+i+1<=14)&&(num[k]!=0||num[k+i+1]!=0))
35             {
36                 k++;
37             }
38             if(k+i+1<=14)
39             {
40                 num[k]=i;
41                 num[k+i+1]=i;
42                 fun(count+1);
43                 num[k]=0;
44                 num[k+i+1]=0;
45             }
46         }
47             
48     }
49 }
50 int main()
51 {
52     int i,j,k;
53     num[1]=7;
54     num[9]=7;
55     num[2]=4;
56     num[7]=4;
57     fun(1);
58     return 0;
59 }

 

蓝桥杯2015校园选拔赛之第四题

标签:

原文地址:http://www.cnblogs.com/zywei/p/4412192.html

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