2021.02.27 剪绳子
今日题目:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。

提示:2 <= n <= 58
- 思路:
自己的菜鸡代码:
class Solution {public int cuttingRope(int n) {if(n < 2) return 0;if(n == 2) return 1;if(n == 3) return 2;int[] rec = new int[n+1];rec[0] = 0;rec[1] = 1;rec[2] = 2;rec[3] = 3;int max;for(int i = 4; i <= n; i++){max = 0;for(int j = 1; j <= i/2; j++){if(rec[j]*rec[i-j] > max){max = rec[j]*rec[i-j];}}rec[i] = max;}return rec[n];}}
运行结果:

2021.02.14 正则表达式匹配(未做,好难)
今日题目:请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”abaca”匹配,但与”aa.a”和”ab*a”均不匹配。




- s 可能为空,且只包含从 a-z 的小写字母。
p 可能为空,且只包含从 a-z 的小写字母以及字符 . 和 ,无连续的 ‘‘。
思路:非确定有限状态自动机
- 自己的菜鸡代码:
- 运行结果:
