70pts,TLE求调,急,必关
查看原帖
70pts,TLE求调,急,必关
1287677
FHY_patrickpp楼主2025/7/23 20:34

提交记录

TLE,请问如何优化?

急,在线等,帮助必回关

#include<bits/stdc++.h>
using namespace std;
int n,m,r,c,a[17][17],rs[17],cs[17],ans=1e9;
void chk()
{
	int s=0;
	for(int i=1;i<=r;i++)for(int j=1;j<c;j++)
			s+=abs(a[rs[i]][cs[j]]-a[rs[i]][cs[j+1]]);
	for(int i=1;i<r;i++)for(int j=1;j<=c;j++)
			s+=abs(a[rs[i]][cs[j]]-a[rs[i+1]][cs[j]]);
	ans=min(ans,s);
}
void dfs2(int p,int k)
{
	if(k>c){
		chk();
		return;
	}
	for(int i=p;i<=m;i++)
	{
		cs[k]=i;
		dfs2(i+1,k+1);
	}
}
void dfs1(int p,int k)
{
	if(k>r)
	{
		dfs2(1,1);
		return;
	}
	for(int i=p;i<=n;i++)
	{
		rs[k]=i;
		dfs1(i+1,k+1);
	}
}
int main()
{
	cin>>n>>m>>r>>c;
	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) cin>>a[i][j];
	dfs1(1,1);
	cout<<ans;
	return 0;
}
2025/7/23 20:34
加载中...