dfs large没过,看了网上的dp
1
class
Solution {
2
public
:
3
int
minCut(
string
s) {
4
int
n =
s.size();
5
vector<
int
> C(n+
1
);
6
vector<vector<
bool
> > P(n, vector<
bool
>
(n));
7
for
(
int
i =
0
; i < n; ++i) P[i][i] =
true
;
8
for
(
int
i =
0
; i <= n; ++
i) {
9
C[i] = n -
i;
10
}
11
for
(
int
i = n-
1
; i >=
0
; --
i) {
12
for
(
int
j = i; j < n; ++
j) {
13
if
(s[i] == s[j] && (j-i <
2
|| P[i+
1
][j-
1
])) {
14
P[i][j] =
true
;
15
C[i] = min(C[i],
1
+C[j+
1
]);
16
}
17
}
18
}
19
return
C[
0
]-
1
;
20
}
21
};
C#
1
public
class
Solution {
2
public
int
MinCut(
string
s) {
3
int
n =
s.Length;
4
int
[] C =
new
int
[n+
1
];
5
bool
[,] P =
new
bool
[n, n];
6
for
(
int
i =
0
; i < n; i++) P[i, i] =
true
;
7
for
(
int
i =
0
; i <= n; i++) C[i] = n -
i;
8
for
(
int
i = n-
1
; i >=
0
; i--
) {
9
for
(
int
j = i; j < n; j++
) {
10
if
(s[i] == s[j] && (j-i <
2
|| P[i+
1
, j-
1
])) {
11
P[i, j] =
true
;
12
C[i] = Math.Min(C[i],
1
+ C[j+
1
]);
13
}
14
}
15
}
16
return
C[
0
] -
1
;
17
}
18
}

