zoukankan      html  css  js  c++  java
  • 摆动序列

    蓝桥杯 摆动序列
    问题描述
      如果一个序列满足下面的性质,我们就将它称为摆动序列:
      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 Main {
    	static int[] value = new int[22];
    	static int[] vis = new int[22];
    	static int k = 0;
    	static int ans = 0;//统计结果
    	public static void main(String args[]){
    		Scanner sc = new Scanner(System.in);
    		k = sc.nextInt();
    		sc.close();
    		dfs(1);
    		System.out.println(ans - k);
    	}
    	
    	private static void dfs(int step){
    		if(step > k)
    			return;
    		if(step==1 || step==2){		//初始化得把1考虑进去,输出结果的时候减掉n就行
    			for(int i=1;i<=k;i++){
    				if(vis[i] == 0){
    					value[step] = i;
    					vis[i] = 1;
    					ans++;
    					dfs(step+1);
    					value[step] = 0;	//这个下次还得用,需要还原最初的情况
    					vis[i] = 0;
    				}
    			}
    		}else{
    			if(value[step-1] > value[step-2]){
    				for(int i=1;i<value[step-2];i++){
    					ans++;
    					value[step] = i;
    					vis[i] = 1;
    					dfs(step+1);
    					value[step] = 0;
    					vis[i] = 0;
    				}
    			}else if(value[step-1] < value[step-2]){
    				for(int i=value[step-2]+1;i<=k;i++){
    					ans++;
    					value[step] = i;
    					vis[i] = 1;
    					dfs(step+1);
    					value[step] = 0;
    					vis[i] = 0;
    				}
    			}
    		}
    	}
    
    }
  • 相关阅读:
    获取时间毫秒数
    http地址自动检测并添加URL链接
    extjs实现选择多表自定义查询功能————前台部分(ext源码)
    items中多个checkgroup在IE6下无法完整显示
    PHP压缩文件夹(ZIP)
    初始化checkboxgroup值
    下载电驴资源
    碰撞与交换
    Actionscript中MovieClip,Sprite,Shape的区别 « 檬檬前端行
    下载的ascb文件如何使用:Flash CS4 设置方法
  • 原文地址:https://www.cnblogs.com/techgy/p/12771760.html
Copyright © 2011-2022 走看看