动态规划(c++)
·
动态规划
题目练习
开餐馆

#include<bits/stdc++.h>
using namespace std;
struct point
{
int val;
int p;
};
int t,n,m;
int sss[1010] = {0};
int sl=0;
int main()
{
cin>>t;
while(t--)
{
point a[1010] = {0};
int dp[1010] = {0};
cin>>n>>m;
for(int i = 1;i<=n;i++)
{
cin>>a[i].p;
}
for(int i = 1;i<=n;i++)
{
cin>>a[i].val;
}
dp[1] = a[1].val;
for(int i = 2;i<=n;i++)
{
dp[i] = dp[i-1];
for(int j = i-1;j>=1;j--)
{
if(a[i].p-a[j].p>m)
{
dp[i ] =dp[j]+a[i].val;
break;
}
}
}
sss[sl] = dp[n];
sl++;
}
for(int i = 0;i<sl;i++)
{
cout<<sss[i]<<endl;
}
return 0;
}
吃奶酪

#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int a[100010] = {0};
for(int i = 0;i<n;i++)
{
cin>>a[i];
}
int dp[100010] ={0};
dp[0] = a[0];
dp[1] = max(a[0],a[1]);
for(int i = 2;i<n;i++)
{
dp[i] = max(dp[i-2]+a[i],dp[i-1]);
}
cout<<dp[n-1]<<endl;
}
return 0;
}
更多推荐



所有评论(0)