美文网首页
栅栏染色

栅栏染色

作者: no_one11 | 来源:发表于2017-08-24 17:12 被阅读0次

题目

我们有一个栅栏,它有n个柱子,现在要给柱子染色,有k种颜色可以染。必须保证不存在超过2个相邻的柱子颜色相同(也就不能有三个颜色连续的柱子啦),求有多少种染色方案。(n和k都是非负整数)

代码

public class Solution {
    /*
     * @param n: non-negative integer, n posts
     * @param k: non-negative integer, k colors
     * @return: an integer, the total number of ways
     */
     
     /**假设buff[i]为有i个柱子时的染色方案 可以分为两种情况
      * 1)最后两根柱子颜色相同,2)最后两根柱子颜色不同
      * 对于第一种情况,最后两根柱子颜色相同,不能三根柱子颜色连续相同,
      * 所以最后两根柱子的颜色选择有k-1种,所以buff[i-2]k-1;
      * 对于第二种情况,最后两根柱子颜色不同,那么最后一根柱子的颜色有k-1种选择方案,所以buff[i-1]k -1
      * 所以综上,我们就得出状态转移方程为:buff[i] = buff[i-1] (k-1) + buff[i-2] (k-1);初始条件:buff[1] = k; buff[2] = k*k;
      */
     
    public int numWays(int n, int k) {
        if(n==0){
            return 0;
        }
        if(n==1){
            return k;
        }
        if(n==2){
            return k*k;
        }
        int[] buff = new int[n+1];
        buff[1] = k;
        buff[2] = k*k;
        for(int i=3;i<=n;i++){
            buff[i] = buff[i-1]*(k-1) + buff[i-2]*(k-1);
        }
        return buff[n];
    }
}

相关文章

  • 栅栏染色

    题目 我们有一个栅栏,它有n个柱子,现在要给柱子染色,有k种颜色可以染。必须保证不存在超过2个相邻的柱子颜色相同(...

  • LintCode 栅栏染色

    题目 我们有一个栅栏,它有n个柱子,现在要给柱子染色,有k种颜色可以染。必须保证任意两个相邻的柱子颜色不同,求有多...

  • 笔记04:栅栏染色问题

    这是一题来自Google的面试题,属于easy类题,其中的解题思路是运用动态规划的思想。 这种给定一个规则,计算有...

  • 针织物的染色方法和纱线染色设备

    一、针织物染色方法 纺织品的染色方法按形态不同主要有纤维染色、纱线染色、织物染色和成衣染色。针织物可以采用纱线染色...

  • 栅栏里,栅栏外

    徐徐清风不能束缚儿时的奔跑,娇娇烈阳下,一份洒脱,一份无虑,一份懵懵懂懂青春的萌芽,一份认认真真用笔刻画的三年...

  • 革兰氏染色试剂盒,解决细菌染色问题

    来聊聊细菌界的这两大染色法:革兰氏染色VS抗酸染色。 一、革兰氏染色(Gram stain) 根据革兰氏染色反应不...

  • 栅栏

    沉默两端 光线像蝴蝶 粉红色的花瓣 零落于满地尘埃 根系沉淀了悲哀 倒影间的照面 钟声是交界 画面灰暗

  • 栅栏

    “这个城市真是糟糕透了!”每当这种暴雨天气,小强总会这样抱怨一番,对着污水横流的街道,窨井盖里冒出来的特殊气味,随...

  • 栅栏

    城郊。 约莫七八平的一小块栅栏小巧精致,栅栏里的几畦春韭在艳阳下泛着黄绿色光泽,娇嫩的似乎能掐出水来。土地黝黑潮湿...

  • 栅栏

    操场有栅栏, 从外面看向里面, 从里面看向外面, 都隔着栅栏。 好比你看着我 我看着你

网友评论

      本文标题:栅栏染色

      本文链接:https://www.haomeiwen.com/subject/qgmedxtx.html