求助,本地能过,但CE
查看原帖
求助,本地能过,但CE
791890
SwiftFlash楼主2023/8/19 13:29
#include <iostream>
#define Size 105
using namespace std;
int F,V,ans=INT_MIN;
int A[Size][Size];
int mem[Size+5][Size+5];
int _f[Size+5],Choice[Size+5];
void DFS(int depth,int sum)
{
	if(sum<=mem[depth][_f[depth-1]]) return;
	mem[depth][_f[depth-1]]=sum;
	if(depth>F)
	{
		if(sum>ans)
		{
			ans=sum;
			for(int i=1;i<=F;i++) Choice[i]=_f[i];
		}	
		return;
	}
	for(_f[depth]=_f[depth-1]+1;_f[depth]<=V-F+depth;_f[depth]++)
		DFS(depth+1,sum+A[depth][_f[depth]]);
}

int main()
{
	cin>>F>>V;
	for(int i=1;i<=F;i++)
		for(int j=1;j<=V;j++)
			cin>>A[i][j];
	for(int i=0;i<=F+1;i++)
		for(int j=0;j<=V+1;j++)
			mem[i][j]=INT_MIN;
	DFS(1,0);
	cout << ans << endl;
	for(int i=1;i<=F;i++)cout << Choice[i] << ' ';
	return 0;
}
2023/8/19 13:29
加载中...