zoukankan      html  css  js  c++  java
  • 7-5 跳一跳(30 分)

    有一条长度为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 }
    
    
    
     
  • 相关阅读:
    ARM中断(一)
    窗口置顶小工具
    volatile关键字
    IIC总线
    ARM中断(三)
    BootLoader —— S3C2440
    视频那些事
    [轉]簡單的顯示隱藏實現
    Apache Service Monitor Start按鈕变灰 的解决方法
    [转载]经典java转码程序,实现native2ascii命令行的功能
  • 原文地址:https://www.cnblogs.com/wzy-blogs/p/9161485.html
Copyright © 2011-2022 走看看