蒟蒻求助!
  • 板块学术版
  • 楼主EntimE
  • 当前回复8
  • 已保存回复8
  • 发布时间2021/10/17 11:10
  • 上次更新2023/11/4 03:32:13
查看原帖
蒟蒻求助!
475173
EntimE楼主2021/10/17 11:10

这题是我自己出的题目,结果死活调不出来,我太蒟蒻了,555

代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,b,c,d,e,mi=999999;
char a[51][51];
int book[51][51];
void dfs(int x,int y,int step)
{
    int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};  
    int tx,ty,k;
    if(x==d&&y==e)
    {
        if(step<mi)
        {
            mi=step;
         } 
         return ; 
    } 
    for(k=0;k<=3;k++)
    {
        tx=x+next[k][0];
        ty=y+next[k][1]; 
        if((tx<1||tx>n||ty<1||ty>m)||(a[ty][tx]=='#'))
            continue;
        if(a[tx][ty]=='.'&&book[tx][ty]==0)
        {
            book[tx][ty]=1;  
            dfs(tx,ty,step+1);  
		    book[tx][ty]=0;   
        } 
    } 
    return ;
}
int main()
{
    int i,j;
    cin>>n>>m;
    for(i=1;i<=n;i++)  
    { 
        for(j=1;j<=m;j++)
        { 
            a[i][j]=' ';   
        } 
    }
    for(i=1;i<=n;i++)
	{ 
        for(j=1;j<=m;j++)
        { 
            cin>>a[i][j];
            if(a[i][j]=='@') 
            { 
                b=i,c=j;  
            }
			if(a[i][j]=='!') 
            { 
                d=i,e=j;  
            }
        }
    }
    dfs(b,c,0); 
    cout<<mi;
    return 0; 
} 
/*
7 7
..#!#..
..#.#..
###.###
...@...
###.###
..#.#..
..#.#..
*/ 
2021/10/17 11:10
加载中...