给定两个长度为 n 的整数列 A 和 B ,每次你可以从 A 数列的左端或右端取走一个数。假设第 i 次取走的数为 ,则第i次取走的数的价值 ,现在希望你求出 的最大值。 数据范围: ,
区块链毕设网qklbishe.com为您提供问题的解答
给定两个长度为 n 的整数列 A 和 B ,每次你可以从 A 数列的左端或右端取走一个数。假设第 i 次取走的数为 ,则第i次取走的数的价值 ,现在希望你求出 的最大值。
数据范围: ,
#include<bits/stdc++.h>
using namespace std;
intmain(){
intn;
cin>>n;
vector<int> a(n+1),b(n+1);
for(inti =1; i <= n; ++i) cin>>a[i];
for(inti =1; i <= n; ++i) cin>>b[i];
vector<vector<int>> dp(n+1, vector<int>(n+1));
for(intlen =1; len <= n; ++len){
for(intl =0; l <= len; ++l){
intr = len – l;
if(l >0) dp[l][r] = dp[l-1][r] + a[l] * b[len];
if(r >0) dp[l][r] = max(dp[l][r], dp[l][r-1] + a[n-r +1] * b[len]);
}
}
intmx =0;
for(intl =0; l <= n; ++l){
mx = max(mx, dp[l][n-l]);
}
cout<<mx<<endl;
return0;
}
51:48
以上就是关于问题给定两个长度为 n 的整数列 A 和 B ,每次你可以从 A 数列的左端或右端取走一个数。假设第 i 次取走的数为 ,则第i次取走的数的价值 ,现在希望你求出 的最大值。
数据范围: ,的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训