求帮忙检查一下谢谢
  • 板块学术版
  • 楼主AAA404
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/5/23 13:08
  • 上次更新2023/10/28 00:47:17
查看原帖
求帮忙检查一下谢谢
723198
AAA404楼主2022/5/23 13:08

WOLF 面对,一群狼,每只狼都有一定的s攻击力和t攻击力。你杀死一只狼。你会受到这只狼的(s攻击力+旁边两只狼的t攻击力)这么多伤害~现在问你如何选择杀狼的顺序使的杀完所有狼时,自己受到的伤害最小。 3 3 5 7 8 2 0 输出 17 杀序号1的狼 3+2=5 杀序号2的狼 5+0=5 杀序号3的狼 7+0=7 总的伤害5+5+7=17;

我是这么写的:

#include<iostream>
#include<cmath>
#include<ctime>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#pragma GCC optimize(2)
using namespace std;
int f[101+10][101+10],s[101+10],t[101+10],n,ans;
int main()
{
	freopen("wolf.in","r",stdin);
	freopen("wolf.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i+10];
	}
	for(int i=1;i<=n;i++)
	{
		cin>>t[i+10];
	}
	for(int len=1;len<=n;len++)
	{
		for(int i=1;i<=n;i++)
		{
			int j=i+len-1;
			if(j<=n)
			f[i+10][j+10]=f[1+10][i-1+10]+t[i-1+10]+t[i+1+10]+f[j+1+10][n+10];
			//printf("%d %d %d\n",i,j,f[i][j]);
		}
	}
	for(int i=1;i<=n;i++)
	{
		ans+=s[i+10];
	}
	cout<<ans+f[1+10][n+10];
	return 0;
}

结果会爆运行时错误,已经做了防越界处理了 哪位大佬帮忙看看谢谢

2022/5/23 13:08
加载中...