比赛 20130923 评测结果
题目名称 打砖块 最终得分 0
用户昵称 Emine 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2017-10-21 14:56:29
显示代码纯文本
#include<cstdio>
#include<iostream>
#define mysister
using namespace std;
const int maxn=50;
int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
void Emine(){
	freopen("brike.in","r",stdin);
	freopen("brike.out","w",stdout);
}
int n,m,a[maxn][maxn],ans=0,vis[maxn][maxn];
void dfs(int cc,int aa,int bb){
	if(cc==m){
	  	int anss=0;
	  	for(int i=0;i<n;++i)
	    	for(int j=0;j<n-i;++j)
	      		if(vis[i][j])
	        		anss+=a[i][j];
	  	ans=max(anss,ans);
	  	return;
	}
	if(bb>=n-aa||aa>=n) return;
	for(int i=bb;i<n-aa;++i)
		if(aa==0||(vis[aa-1][i]&&vis[aa-1][i+1])){
	  		vis[aa][i]=1;
	  		dfs(cc+1,aa,i+1);dfs(cc+1,aa+1,0);
	  		vis[aa][i]=0;
		}
}
int main(){
	Emine();
	n=read(),m=read();
	for(int i=0;i<n;++i)
	  	for(int j=0;j<n-i;++j)
	    	a[i][j]=read();
	dfs(0,0,0);
	printf("%d\n",ans);
	return 0;
}