gpt4 book ai didi

c - 如何使其在动态规划中适用于 f[i] = max(f[i], f[i - 1] + f[i]) ?

转载 作者:行者123 更新时间:2023-11-30 14:32:55 30 4
gpt4 key购买 nike

动态规划这里有一个问题
大写字母AZ对应于整数[-13,12],因此一个字符串对应于一整列。我们将对应的整列的总和称为字符串的特征值。例如:字符串ACM对应的总体列为{-13,-11,-1},则ACM的特征变量(-13)+(-11)+(-1)=-25;其子串AC变量-24的特征;子串M的特征级别-1。给你一个字符串,找出该字符串所有子串的最大特征值。

#include<stdio.h>
#include<string.H>
#include<algorithm>
using namespace std;
int main(){
int n, f[1000];
char s[1000];
scanf("%d", &n);
while(n--){
int ans;
scanf("%s", &s[0]);
ans = f[0] = s[0] - 'A' - 13;
for(int i = 1; i < strlen(s); ++i){
f[i] = s[i] - 'A' - 13;
f[i] = max(f[i], f[i - 1] + f[i]); //I can't understand
if(f[i] > ans)
ans = f[i];
}
printf("%d\n", ans);
}
return 0;
}

最佳答案

该行代码将当前索引最大值设置为当前字母的最大值,或者将当前字母添加到前一个索引的最大值。此循环获取字符串到每个索引的最大值。为了获得总答案,您需要逐步决定是否要将下一个字母添加到前一个最大值,或者开始一个新的子字符串。如果黄金答案 ans 比以前大,则更新它。

关于c - 如何使其在动态规划中适用于 f[i] = max(f[i], f[i - 1] + f[i]) ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59619631/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com