zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法提高 超级玛丽

    算法提高 超级玛丽
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      大家都知道"超级玛丽"是一个很善于跳跃的探险家,他的拿手好戏是跳跃,但它一次只能向前跳一步或两步。有一次,他要经过一条长为n的羊肠小道,小道中有m个陷阱,这些陷阱都位于整数位置,分别是a1,a2,…am,陷入其中则必死无疑。显然,如果有两个挨着的陷阱,则玛丽是无论如何也跳过不去的。
      现在给出小道的长度n,陷阱的个数及位置。求出玛丽从位置1开始,有多少种跳跃方法能到达胜利的彼岸(到达位置n)。
    输入格式
      第一行为两个整数n,m
      第二行为m个整数,表示陷阱的位置
    输出格式
      一个整数。表示玛丽跳到n的方案数
    样例输入
    4 1
    2
    样例输出
    1
    数据规模和约定
      40>=n>=3,m>=1
      n>m;
      陷阱不会位于1及n上

    import java.util.Scanner;
    
    
    public class 超级玛丽 {
    	static int n;
    	static int num=0;
    	static void recurse(int cur,int a[]){
    		if(cur==n){
    			num++;
    			return;
    		}
    		if(cur+1<=n&&a[cur+1]==0)
    			recurse(cur+1,a);
    		if(cur+2<=n&&a[cur+2]==0)
    			recurse(cur+2,a);
    	}
    	public static void main(String[] args) {
    		Scanner in=new Scanner(System.in);
    		n=in.nextInt();
    		int m=in.nextInt();
    		int a[]=new int[n+1];
    		for(int i=0;i<m;i++){
    			int t=in.nextInt();
    			if(t<n)
    				a[t]=1;
    		}
    		recurse(1,a);
    		System.out.println(num);
    
    	}
    
    
    }
    
    
  • 相关阅读:
    AngularJS(17)-Angular小程序
    AngularJS(16)-路由
    AngularJS(15)-依赖注入
    AngularJS(14)-动画
    AngularJS(13)-包含
    AngularJS(12)-BootStrap集成
    AngularJS(11)-API
    AngularJS(10)-数据验证
    Mysql 备份和恢复.sql文件,导入.csv文件
    Mysql group_concat()
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13078374.html
Copyright © 2011-2022 走看看