为什么会超时?有什么优化思路吗?
查看原帖
为什么会超时?有什么优化思路吗?
913288
3_14楼主2024/10/17 21:40
#include<bits/stdc++.h>
#define str to_string
using namespace std;
using ll=long long;
const int MAX=22;
int n,m,k,mp[MAX][MAX],ans=INT_MIN;
void dfs(int x,int y,int cnt,int t){
	if(t==k-x){
		ans=max(ans,cnt);
		return;
	}
	t++;
	if(x-1>0)dfs(x-1,y,cnt+mp[x-1][y],t);
	if(y-1>0)dfs(x,y-1,cnt+mp[x][y-1],t);
	if(x+1<=m)dfs(x+1,y,cnt+mp[x+1][y],t);
	if(y+1<=n)dfs(x,y+1,cnt+mp[x][y+1],t);
}
int main(){
	cin>>m>>n>>k;
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			cin>>mp[i][j];
	for(int i=1;i<=n;i++)dfs(1,i,mp[1][i],1);
	cout<<ans<<'\n';
	return 0;
}
2024/10/17 21:40
加载中...