自己写了个题,结果自己没做出来
虽然现在已经A了,但还是想请大佬们看看原来那个程序哪里有问题
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 105;
int n,m,vis[MAXN][MAXN],mina=INT_MAX;
char a[MAXN][MAXN];
inline bool ck(const int &x,const int &y){return x<=n && x>0 && y<=m && y>0;}
inline void dfs(const int &x,const int &y,int time,int hp){
if(x==n && y==m && hp>0){mina=min(mina,time);return;}
if(vis[x][y]==1||a[x][y]=='#'||a[x][y]=='J'||ck(x,y)==0) return;
int t=0,h=0;
if(a[x][y]=='H') t++;
if(a[x][y]=='G') t+=2;
if(a[x][y]=='C') h+=5;
if(hp-h<=0) return;
vis[x][y]=1;
dfs(x+1,y,time+1+t,hp-h);dfs(x,y+1,time+1+t,hp-h);
dfs(x-1,y,time+1+t,hp-h);dfs(x,y-1,time+1+t,hp-h);
// vis[x][y]=0;
}
int main(){
scanf("%d%d",&n,&m);
if(n==0||m==0){cout<<0;return 0;}
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)cin>>a[i][j];
dfs(1,1,0,10);
cout<<mina;
return 0;
}