帮我看看这道站外题
  • 板块灌水区
  • 楼主FormulaOne
  • 当前回复8
  • 已保存回复8
  • 发布时间2021/8/12 09:18
  • 上次更新2023/11/4 10:58:04
查看原帖
帮我看看这道站外题
180406
FormulaOne楼主2021/8/12 09:18

题面: 为了活跃ACM集训队的氛围,伟大的明明子决定举办一个欢快的火锅游戏。火锅游戏会持续n轮,每轮会放出最多m份某种美食,你在第x轮吃掉y份某种美食,就会得到a[x][y]的幸福度。在明明子的火锅游戏中,你最多加起来能吃掉m份美食,请问你能得到的最大幸福度是多少?(某一轮可以选择不吃)

Input 多组输入。 每组数据第一行输入n,m。n是轮次,m是每轮的美食数以及你能吃的最大份数。 接下来n行m列输入a矩阵。 a[x][y]代表幸福度1<=x<=n<=1001<=y<=m<=100。 n=0并且m=0时结束多组输入。

Output 对于每组数据,程序应该输出一行,为你将获得的最大幸福度。

代码

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
long long n,d[1000001],a[1001][1001],m;
int main()
{
	while(true)
	{
		memset(d,0,sizeof(d));
		cin>>n>>m;
		if(n==0&&m==0) break;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				cin>>a[i][j];
		for(int i=1;i<=n;i++)
			for(int k=1;k<=m;k++)
				for(int j=m;j>=k;j--)
					d[j]=max(d[j],d[j-k]+a[i][k]);
		cout<<d[m]<<endl;
	}
	return 0;
}
2021/8/12 09:18
加载中...