zoukankan      html  css  js  c++  java
  • 秋叶收藏集

    动态规划

    class Solution {
        public int minimumOperations(String leaves) {
            int n = leaves.length();
    
            int [][]state = new int[n][3];
            char[] leaveArr = leaves.toCharArray();  
            //状态0:在左边区域需要调整多少次
            //状态1:在中间区域需要调整多少次
            //状态2:在右边区域需要调整多少次
            state[0][0] = leaveArr[0] == 'r'? 0 : 1;
            //必须加否则类似"yry"的样例过不了
            state[0][1] = state[0][2] = state[1][2] = Integer.MAX_VALUE;
            //state[n-1][2] = leaveArr[n-1]
            int isYellow = 0;
            for(int i=1;i<n;i++){
                isYellow = leaveArr[i] == 'r'? 0 : 1;
                state[i][0] = state[i-1][0]+isYellow;
                //左中取最小
                state[i][1] = Math.min(state[i-1][0],state[i-1][1])+1-isYellow;
                //第三片叶子以及之后才可以在右边区域
                //中右取最小
                if(i>=2) state[i][2] = Math.min(state[i-1][2],state[i-1][1])+isYellow;
            }
           return state[n-1][2];
        }
    }
    
    
    
  • 相关阅读:
    CSS:CSS 创建
    mfs-用户
    java实现扑克牌移动
    java实现扑克牌移动
    java实现扑克牌移动
    java实现纵横火柴棋
    java实现纵横火柴棋
    java实现纵横火柴棋
    java实现纵横火柴棋
    java实现纵横火柴棋
  • 原文地址:https://www.cnblogs.com/cstdio1/p/13762829.html
Copyright © 2011-2022 走看看