File tree Expand file tree Collapse file tree 2 files changed +78
-0
lines changed
Expand file tree Collapse file tree 2 files changed +78
-0
lines changed Original file line number Diff line number Diff line change 1+ #include <stdio.h>
2+ #include <algorithm>
3+ #include <cstring>
4+
5+ using namespace std;
6+
7+
8+
9+ int dp[501][501];
10+ int f[501];
11+ int sum[501];
12+
13+ int func(int s, int e){
14+ if (s >= e) return 0;
15+
16+ if (dp[s][e] != -1) return dp[s][e];
17+ if (e == s + 1) return f[s] + f[e];
18+
19+ dp[s][e] = 123456789;
20+ for (int i = s; i <= e; i++){
21+ int tmp = func(s, i) + func(i + 1, e) + sum[e] - sum[s - 1];
22+ dp[s][e] = min(dp[s][e], tmp);
23+ }
24+ return dp[s][e];
25+ }
26+
27+ int main(){
28+
29+
30+ int t;
31+ scanf("%d",&t);
32+ while (t--){
33+ int n;
34+ scanf("%d",&n);
35+ for (int i = 1; i <= n; i++){
36+ scanf("%d",&f[i]);
37+ sum[i] = sum[i - 1] + f[i];
38+ }
39+ for (int i = 1; i <= n; i++){
40+ for (int j = 1; j <= n; j++){
41+ dp[i][j] = -1;
42+ }
43+ }
44+ printf("%d\n",func(1, n) );
45+ }
46+ return 0;
47+ }
Original file line number Diff line number Diff line change 1+ #include <stdio.h>
2+ #include <algorithm>
3+ #include <cstring>
4+ #include <stdlib.h>
5+ using namespace std;
6+
7+
8+ int main() {
9+ int dp[1001][1001];
10+ char a[1001],b[1001];
11+ memset(dp,0,sizeof(dp));
12+ scanf("%s",&a);
13+ getchar();
14+ scanf("%s",&b);
15+ getchar();
16+ int alen=strlen(a);
17+ int blen=strlen(b);
18+
19+ for(int i=1;i<=alen;i++){
20+ for(int j=1;j<=blen;j++){
21+ if(a[i-1]==b[j-1]){
22+ dp[i][j]+=dp[i-1][j-1]+1;
23+ }
24+ else{
25+ dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
26+ }
27+ }
28+ }
29+ printf("%d",dp[alen][blen]);
30+ return 0;
31+ }
You can’t perform that action at this time.
0 commit comments