码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode276- Paint Fence- easy

时间:2017-12-04 14:12:22      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:返回   int   颜色   enc   leetcode   结果   hat   each   ber   

There is a fence with n posts, each post can be painted with one of the k colors.

You have to paint all the posts such that no more than two adjacent fence posts have the same color.

Return the total number of ways you can paint the fence.

Note:
n and k are non-negative integers.

 

DP。

状态定义:same[i] 表示涂到第i根杆子的时候如果限制i和i-1颜色相同,总共有多少种刷的方法。 diffp[i] 表示涂到第i根杆子的时候如果限制i和i-1颜色不同,总共有多少种刷的方法。

状态转移方程:same[i] = 1 * diff[i - 1];    diff[i] = (k - 1) * (diff[i - 1] + same[i - 1]);  都是当前自己可选的颜色种类 * i - 1与i - 2之间需不需要相同的取舍。

返回结果:same[n - 1] + diff[n - 1]

 

实现:

class Solution {
    //same(n) = 1 * diff(n - 1)   diff(n) = (k - 1) * (diff(n - 1) + same(n - 1))
    public int numWays(int n, int k) {
        if (n <= 0 || k <= 0) {
            return 0;
        }
        
        int[] same = new int[n];
        int[] diff = new int[n];
        
        same[0] = 0;
        diff[0] = k;
        for (int i = 1; i < n; i++) {
            same[i] = 1 * diff[i - 1];
            diff[i] = (k - 1) * (diff[i - 1] + same[i - 1]);
        }
        return same[n - 1] + diff[n - 1];
        
    }
}

 

leetcode276- Paint Fence- easy

标签:返回   int   颜色   enc   leetcode   结果   hat   each   ber   

原文地址:http://www.cnblogs.com/jasminemzy/p/7976650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!