题解:P10294 [CCC 2024 J5] Harvest Waterloo

var code = "708ecab3-0cc3-4b16-8b4c-a90944d7d7e6"

思路:

一道非常板的深搜题(但我还是求机房大佬把我的屎山代码修改后才完成的。呜呜我太蒻了)。

提供一个不同的思路。

由于本蒟蒻觉得用字符类型的地图进行深搜太麻烦了,所以在输入时将每个南瓜的位置用它们的价值替换,干草块用 0 表示,就将此题转化成普通的深搜了。

再将深搜板子上加一段统计价值的代码就可以愉快地 AC 了。

AC 代码:

#include<bits/stdc++.h>
using namespace std;
int r,c,xx[4]={0,0,-1,1},yy[4]={1,-1,0,0},cont,s,e;
char ma[10005][10005];
int mapp[10005][10005];
void dfs(int x,int y){
	cont+=mapp[x][y];
	mapp[x][y]=0;
	int nx,ny;
	for(int i=0;i<=3;i++){
		nx=x+xx[i],ny=y+yy[i];
		if(mapp[nx][ny]!=0){
			dfs(nx,ny);
		}
	}
}
int main(){
	cin>>r>>c;
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			cin>>ma[i][j];
			if(ma[i][j]=='L'){
				mapp[i][j]=10;
			}
			if(ma[i][j]=='M'){
				mapp[i][j]=5;
			}
			if(ma[i][j]=='S'){
				mapp[i][j]=1;
			}
		}
	}
	cin>>s>>e;
	dfs(s+1,e+1);//因为左上角坐标为(0,0),所以将起点横纵坐标都加1
	cout<<cont;
	return 0;
}
posted @ 2024-04-01 18:22  IOI_official  阅读(187)  评论(0)    收藏  举报  来源