P2258求助
  • 板块学术版
  • 楼主theb0t
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/10 21:25
  • 上次更新2023/11/3 04:36:47
查看原帖
P2258求助
997236
theb0t楼主2023/8/10 21:25

P2258 [NOIP2014 普及组] 子矩阵

dalao求助,我的代码问题出在哪里?

这是我的代码

// 语言:C++
#include <bits/stdc++.h>
using namespace std;

const int N=20;

int mp[N][N];
int n,m,r,c;
int dis[][2]={{0,1},{1,0}};

int dfs(int x,int y,int sum) {
	for(int i=0;i<2;i++) {
		int fx=x+dis[i][0];
		int fy=y+dis[i][1];
		if(fx>=1&&fx<=n&&fy>=1&&fy<=m) {
			sum+=abs(mp[x][y]-mp[fx][fy]);
			sum+=dfs(fx,fy,0);
		}
	}
	return sum;
}

int ans=0x7fffffff;
int main() {
	cin>>n>>m>>r>>c;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>mp[i][j];// 矩阵的分值:矩阵中每一对相邻元素之差的绝对值之和。
	for(int i=1;i<=n-r+1;i++) {
		for(int j=1;j<=m-c+1;j++) {
			int k=dfs(i,j,0);
			ans=min(ans,k);
		}
	}
	cout<<ans<<endl;
	return 0;
}
2023/8/10 21:25
加载中...