题解: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;
}