动态规划题
2140. 解决智力问题https://leetcode.cn/problems/solving-questions-with-brainpower/
给你一个下标从 0 开始的二维整数数组 questions
,其中 questions[i] = [pointsi, brainpoweri]
。
这个数组表示一场考试里的一系列题目,你需要 按顺序 (也就是从问题 0
开始依次解决),针对每个问题选择 解决 或者 跳过 操作。解决问题 i
将让你 获得 pointsi
的分数,但是你将 无法 解决接下来的 brainpoweri
个问题(即只能跳过接下来的 brainpoweri
个问题)。如果你跳过问题 i
,你可以对下一个问题决定使用哪种操作。
-
比方说,给你
questions = [[3, 2], [4, 3], [4, 4], [2, 5]]
:-
如果问题
0
被解决了, 那么你可以获得3
分,但你不能解决问题1
和2
。 -
如果你跳过问题
0
,且解决问题1
,你将获得4
分但是不能解决问题2
和3
。
-
提示:
-
1 <= questions.length <= 10^5
-
questions[i].length == 2
-
1 <= pointsi, brainpoweri <= 10^5
对了12/54的代码:
#define max(a,b) (((a)>(b))?(a):(b))
long long mostPoints(int** questions, int questionsSize, int* questionsColSize) {long long record[questionsSize];for(int i=0;i<questionsSize;i++) {record[i] = 0;}for(int i=0;i<questionsSize;i++) {record[i]=max(record[i],record[i]+questions[i][0]);const int temp=i+1+questions[i][1];if (temp<questionsSize) {record[temp]=max(record[temp],record[i]);}}return record[questionsSize-1];
}
正则表达式
正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于匹配字符串的模式。
1. 基本概念
正则表达式由字符和特殊符号组成,用于描述字符串的模式。使用正则表达式,可以检查某个字符串是否符合特定的格式,或者从字符串中提取符合模式的部分。
2. 常用的正则表达式语法
2.1. 字符类
-
[abc]
:表示匹配a
、b
或c
中的任意一个字符。 -
[^abc]
:表示匹配任何不是a
、b
或c
的字符。 -
[a-z]
:表示匹配从a
到z
的所有小写字母。 -
[A-Z]
:表示匹配从A
到Z
的所有大写字母。 -
[0-9]
:表示匹配所有数字。
2.2. 预定义字符类
-
\d
:匹配任何一个数字,等同于[0-9]
。 -
\D
:匹配任何非数字字符,等同于[^0-9]
。 -
\w
:匹配任何一个字母、数字或下划线,等同于[a-zA-Z0-9_]
。 -
\W
:匹配任何非字母、数字或下划线字符,等同于[^a-zA-Z0-9_]
。 -
\s
:匹配任何空白字符(如空格、制表符、换行符等)。 -
\S
:匹配任何非空白字符。
2.3. 元字符
-
.
:匹配除换行符以外的任何单个字符。 -
^
:匹配输入字符串的开始。 -
$
:匹配输入字符串的结尾。 -
*
:表示匹配前一个元素零次或多次。 -
+
:表示匹配前一个元素一次或多次。 -
?
:表示匹配前一个元素零次或一次。 -
{n}
:匹配前一个元素恰好 n 次。 -
{n,}
:匹配前一个元素至少 n 次。 -
{n,m}
:匹配前一个元素至少 n 次,但不超过 m 次。
2.4. 分组和捕获
-
(...)
:用于分组,记住匹配的子表达式。可以通过编号或名称捕获组。-
例:
(abc)
将匹配abc
并将其作为组 1。
-
-
|
:表示“或”的关系。-
例:
abc|def
可以匹配abc
或def
。
-
3. 特殊的转义字符
当需要匹配的字符具有特殊含义时,可以使用反斜杠 \
进行转义。例如:
-
\.
:匹配字面意思的句点.
。 -
\*
:匹配字面意思的星号*
。