zoukankan      html  css  js  c++  java
  • 激光样式--枚举+递推


    枚举

    	import java.util.Scanner;
    	public class Main {
    		public static void main(String[] args) {
    			int cnt = 0;
    			Scanner sc = new Scanner (System.in);
    			int n = sc.nextInt();
    			for(int i = 0 ; i < 1 << n ; i++) {
    				boolean flag = true;
    				for(int j = 1 ; j < n ; j++) {
    					if(get(i,j)==1&&get(i,j-1)==1) {
    						flag = false;
    						break;
    					}
    				}
    				if(flag) {
    					cnt +=1;
    				}
    			}
    			System.out.println(cnt);
    		}
    		private static int get(int i, int j) {//判断i的j位是否为1 
    			return i >>j&1;
    		}
    	}
    

    递推解法:
    开一个二维数组 选0 /1
    初始值arr(0,0) 没有限制下一位 我们下一位写0 /1 都行 所以我们把第0位写成 “0 ” 为 1 如果第0位(不是有效位)看成1限制有效位第一位 不能填1

    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new  Scanner (System.in);
    		int num = sc.nextInt();
    		int arr[][]  = new int[num+1][2];
    		arr[0][0] =1;//为后面作铺垫 方便后面的代码处理
    		for(int i = 1 ; i <= num ;i++) {
    			arr[i][0] = arr[i-1][0] + arr[i-1][1];
    			arr[i][1] = arr[i-1][0];
    		}
    		System.out.println(arr[num][1]+ arr[num][0]);
    	}
    }
    
  • 相关阅读:
    自动封箱和拆箱
    关于Java的一道内存的题目
    volatile关键字
    阶乘尾零
    Java之final的解析
    从1到n整数中1出现的次数
    最小安装雷达数量
    二叉树重建
    最短路径—Dijkstra算法
    PAT A1063——set的常见用法详解
  • 原文地址:https://www.cnblogs.com/cznczai/p/11147957.html
Copyright © 2011-2022 走看看