zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法训练 摆动序列

    问题描述
      如果一个序列满足下面的性质,我们就将它称为摆动序列:
      1. 序列中的所有数都是不大于k的正整数;
      2. 序列中至少有两个数。
      3. 序列中的数两两不相等;
      4. 如果第i – 1个数比第i – 2个数大,则第i个数比第i – 2个数小;如果第i – 1个数比第i – 2个数小,则第i个数比第i – 2个数大。
      比如,当k = 3时,有下面几个这样的序列:
      1 2
      1 3
      2 1
      2 1 3
      2 3
      2 3 1
      3 1
      3 2
      一共有8种,给定k,请求出满足上面要求的序列的个数。
    输入格式
      输入包含了一个整数k。(k<=20)
    输出格式
      输出一个整数,表示满足要求的序列个数。
    样例输入
    3
    样例输出
    8

    import java.util.Scanner;
    
    
    public class 摆动序列 {
    	public static int [] v = new int [30];
    	public static int [] value = new int [30];
    	public static int n,ans=0;
    	public static void main(String[] args) {
    		Scanner sc =new Scanner(System.in);
    		n=sc.nextInt();
    		dfs(1);
    		System.out.println(ans-n);
    	}
    	public static void dfs(int x){
    	    if(x>n) return ;
    	    if(x==1||x==2){             //初始长度为1或者2时比较特殊 
    	        for(int i=1;i<=n;i++){
    	            if(v[i]==0){
    	                value[x]=i;
    	                v[i]=1;
    	                ans++;
    	                dfs(x+1);
    	                value[x]=0;     //每次记得还原回来就行了 
    	                v[i]=0;
    	            }
    	        }
    	    }
    	    else {
    	        if(value[x-1]>value[x-2]){  //下面分别是两种情况 
    	            for(int i=1;i<value[x-2];i++){
    	                if(v[i]==0){
    	                    ans++;
    	                    value[x]=i;
    	                    v[i]=1;
    	                    dfs(x+1);
    	                    value[x]=0;
    	                    v[i]=0;
    	                }
    	            }
    	        }
    	        else if(value[x-1]<value[x-2]){
    	            for(int i=value[x-2];i<=n;i++){
    	                if(v[i]==0){
    	                    ans++;
    	                    value[x]=i;
    	                    v[i]=1;
    	                    dfs(x+1);
    	                    value[x]=0;
    	                    v[i]=0;
    	                }
    	            }
    	        }
    	    }
    	}
    
    	
    
    }
    
    
  • 相关阅读:
    module.exports = $; $ is not defined
    npm run build 时 报 __webpack_public_path__ = window.webpackPublicPath; 中的windows未定义
    TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
    windows package.json设置多个环境变量
    点击劫持ClickJacking
    判断数组的方法/判断JS数据类型的四种方法
    时间操作
    Ado调用存储过程
    layui表格增删改查与上传图片+Api
    layui表单与上传图片
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13078515.html
Copyright © 2011-2022 走看看