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

擅长排列的小明II

时间:2016-05-04 08:59:20      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

先搜索 出来一点结果之后  看结果之间的 联系 得出  递推公式  .

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<math.h>
 4 #include<iostream>
 5 #include<limits.h>
 6 #include<algorithm>
 7 #include<queue>
 8 #include<vector>
 9 #include<set>
10 #include<stack>
11 #include<string>
12 #include<sstream>
13 #include<map>
14 #include<cctype>
15 using namespace std;
16 int visited[60],result[60],flag,n;
17 void DFS(int mark)
18 {
19     if(mark==n)
20         flag++;
21     else
22     {
23         for(int i=2;i<=n;i++)
24         {
25             if(abs(i-result[mark])<=2&&!visited[i])
26             {
27                 result[mark+1]=i;
28                 visited[i]=1;
29                 DFS(mark+1);
30                 visited[i]=0;
31             }
32         }
33     }
34 }
35 int main()
36 {
37     while(scanf("%d",&n)!=EOF)
38     {
39         memset(visited,0,sizeof(visited));
40         visited[1]=result[1]=1;
41         flag=0;
42         DFS(1);
43         printf("%d\n",flag);
44     }
45     return 0;
46 }

 

可以通过一些 结果推出来  递推公式

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<math.h>
 4 #include<iostream>
 5 #include<limits.h>
 6 #include<algorithm>
 7 #include<queue>
 8 #include<vector>
 9 #include<set>
10 #include<stack>
11 #include<string>
12 #include<sstream>
13 #include<map>
14 #include<cctype>
15 using namespace std;
16 int main()  
17 {  
18     int n,ac[57]={0,1,1,2};  
19     for(int i=4;i<=55;i++)  
20         ac[i]=ac[i-1]+ac[i-3]+1;  
21     while(~scanf("%d",&n))  
22     {  
23         printf("%d\n",ac[n]);  
24     }  
25     return 0;  
26 }  
27   

 

擅长排列的小明II

标签:

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

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