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

514. Paint Fence

时间:2019-01-17 16:28:01      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:一个   ati   more   int   ice   temp   example   pos   code   

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.

Example
Given n=3, k=2 return 6

      post 1,   post 2, post 3
way1    0         0       1 
way2    0         1       0
way3    0         1       1
way4    1         0       0
way5    1         0       1
way6    1         1       0
Notice
n and k are non-negative integers.
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
     */
    public int numWays(int n, int k) {
        if(k == 0 || n == 0) return 0;
        //对于第一个来说,相当于跟之前的不一样,所以diff是k
        int diff = k;
        int same = 0;
        for(int i = 2; i <= n; i++) {
            int temp = diff;
            // 如果当前的和上一个不同,那么就是在上一个的基础上*(k-1)
            diff = (same + diff) * (k-1);
            //如果当前的和上一个相同,那么上一个和上上一个肯定不相同
            //所以方法数就是上一个diff的值
            same = temp;
        }
        return same + diff;
    }
}

514. Paint Fence

标签:一个   ati   more   int   ice   temp   example   pos   code   

原文地址:https://www.cnblogs.com/lawrenceSeattle/p/10282780.html

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