博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 276: Paint Fence
阅读量:5287 次
发布时间:2019-06-14

本文共 1859 字,大约阅读时间需要 6 分钟。

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.

 

1 public class Solution { 2     public int NumWays(int n, int k) { 3         if (n < 1 || k < 1) return 0; 4         if (n == 1) return k; 5          6         int dpSame = k, dpDifferent = k * (k - 1); 7          8         for (int i = 2; i < n; i++) 9         {10             var tmp = dpSame;11             dpSame = dpDifferent;12             dpDifferent = (tmp + dpDifferent) * (k - 1); 13         }14         15         return dpSame + dpDifferent;16     }17     18     private int DFS(int n, int k, int start, int cur, bool sameColor)19     {20         if (start >= n)21         {22             return cur;23         }24         25         if (sameColor)26         {27             return DFS(n, k, start + 1, cur * (k - 1), false);28         }29         else30         {31             return DFS(n, k, start + 1, cur, true) + DFS(n, k, start + 1, cur * (k - 1), false);32         }33     }34 }35 36 // DFS, timeout37 public class Solution1 {38     public int NumWays(int n, int k) {39         if (n < 1 || k < 1) return 0;40         41         return DFS(n, k, 1, k, false);42     }43     44     private int DFS(int n, int k, int start, int cur, bool sameColor)45     {46         if (start >= n)47         {48             return cur;49         }50         51         if (sameColor)52         {53             return DFS(n, k, start + 1, cur * (k - 1), false);54         }55         else56         {57             return DFS(n, k, start + 1, cur, true) + DFS(n, k, start + 1, cur * (k - 1), false);58         }59     }60 }

 

转载于:https://www.cnblogs.com/liangmou/p/8054810.html

你可能感兴趣的文章
IEEE 754浮点数表示标准
查看>>
declare 结构用来设定一段代码的执行指令
查看>>
图解算法读书笔记
查看>>
调试学习笔记
查看>>
解开lambda最强作用的神秘面纱
查看>>
Java基础:Object类中的equals与hashCode方法
查看>>
C#拦截Http请求
查看>>
图片下载器
查看>>
找不到docker.socket解决方法
查看>>
Activity生命周期
查看>>
sql server和mysql中分别实现分页功能
查看>>
kafka server管理
查看>>
系统设计与分析(六)
查看>>
Java IO-1 File类
查看>>
HW5.29
查看>>
Linux查看物理CPU个数,核数,逻辑CPU个数;内存信息
查看>>
sqlserver查询效率
查看>>
FoxMail邮件设置
查看>>
percona-toolkit 之 【pt-online-schema-change】说明
查看>>
[模板]大数加法
查看>>