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

7-5 跳一跳(30 分)

时间:2018-06-09 23:16:23      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:数据规模   eof   size   ace   turn   return   string   ccf   font   

有一条长度为n的赛道,其中有m个陷阱,这些陷阱都位于整数位置,分别是a1,a2,....am,陷入其中则必死无疑。

开始时小人站在位置1,小人一次只能向前跳一步或两步。显然,如果有两个挨着的陷阱,小人是无论如何也跳不过去的。

现在给出赛道的长度n,陷阱的个数m及位置。问有多少种跳跃方案可以让小人到达终点(位置n)。

数据规模和约定:(  40>=n>=3, m>=1, n>m;  陷阱不会位于1及n上 )

输入格式:

第一行为两个整数n,m 第二行为m个整数,表示陷阱的位置

输出格式:

一个整数。表示小人跳到n的方案数

输入样例:

在这里给出一组输入。例如:

8 2
5 7

输出样例:

在这里给出相应的输出。例如:

3
网上搜了搜题解,发现都是用dp做的,然鹅我不会dp,就用深搜做了以下,感觉不难。
 1 #include <iostream>
 2 #include <string>
 3 #include <string.h>
 4 using namespace std;
 5 int n, m, counts;
 6 int a[41];
 7 void dfs(int x, int step) {
 8     if(x > n) {
 9         return;
10     } 
11     if(x == n) {
12         counts++;
13         return;
14     }
15     if(a[x+1] != 1) {
16         dfs(x+1, step+1);
17     } 
18     if(a[x+2] != 1) {
19         dfs(x+2, step+2);
20     } 
21 }
22 int main() 
23 {
24     
25     cin >> n >> m;
26     //memset(a,1,sizeof(a));
27     while(m--) {
28         int x;
29         cin >> x;
30         a[x] = 1;
31     }
32     dfs(1, 0);
33     cout << counts;
34 }

 

 

7-5 跳一跳(30 分)

标签:数据规模   eof   size   ace   turn   return   string   ccf   font   

原文地址:https://www.cnblogs.com/wzy-blogs/p/9161485.html

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