自己的题自己没做出来,88分求助!
  • 板块题目总版
  • 楼主Accepetd
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/7/13 11:49
  • 上次更新2024/7/20 14:32:52
查看原帖
自己的题自己没做出来,88分求助!
1072849
Accepetd楼主2024/7/13 11:49

U448988

自己写了个题,结果自己没做出来

虽然现在已经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;
}
2024/7/13 11:49
加载中...