第一题:方格分割
(资料图)
题目分析
对称的使用dfs解决这个问题;
代码如下
第二题:猴子分香蕉
题目分析
这道题目的分析简单,但是要注意一点的是满足我所写代码的最小的数是16而不是正确答案3141,所以我改成了从17开始;
代码如下
第三题:明明的随机数
题目分析
使用set类型即可;
代码如下
第四题:修剪灌木
题目分析
//假设点i刚被修剪完为0,然后会向右/向左跑一趟,//端点会被遍历1次,i与端点间的点会被遍历两次//而重新修剪i的当天早上(因为是傍晚修剪,所以当天也会被算上)//达到最大高度,然后置零//也就是说://最大长度=中间节点数*2+1(端点)+1(自生)==max(左边/右边节点数)*2//左边端点数:i-1//右边端点数:n-i
代码如下
第五题:约数个数
题目分析:此题容易
代码如下
第六题:质数拆分
题目分析
这是一个背包问题,dp[i][j]表示的是前i个质数能拼出j的可能数,而转移方程为dp[i][j]=dp[i-1][j]+dp[i-1][j-prime[i]]其中需要dp[i-1][j]为基础数量,dp[i-1][j-prime[i]]为额外数量,只要当j的值大于prime[i]时才加上;
代码如下
第七题:矩形切割
题目分析:此题容易
代码如下
第八题:最大公共子串
题目分析
代码如下