5 条题解

  • 1
    @ 2022-10-8 20:45:12
    #include<bits/stdc++.h>
    using namespace std; 
    struct oppo{
    	int x,y;
    	int s,f;
    }d[10086];
    
    char maps[105][105],b[105][105];
    int main(){
    	int n,m,x1,y1,x2,y2,head=1,tail=2;
    	bool flag=0;
        cin>>n>>m;
        for(int i=1;i<=n;i++){
        	for(int j=1;j<=m;j++){
        		cin>>maps[i][j];
    		} 
    	}
    	//cin>>x1>>y1>>x2>>y2;
    	x1=1,y1=1;
    	x2=n,y2=m;
    	int tx,ty;
    	d[1].x=x1;
    	d[1].y=y1;
    	d[1].s=0;
    	b[d[1].x][d[1].y]=1;
    	d[1].f=0;
    	int moving[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
    	while(head<tail){
    		for(int i=0;i<=3;i++){
    			tx=d[head].x+moving[i][0];
    			ty=d[head].y+moving[i][1];
    			if(tx<1||tx>m||ty<1||ty>n||maps[tx][ty]=='#'||b[tx][ty]==1)
    			continue;
    			d[tail].x=tx;
    			d[tail].y=ty;
    			d[tail].s=d[head].s+1;
    			b[tx][ty]=1; 
    			d[tail].f=head;
    			tail++;
    		if(tx==x2&&ty==y2){
    		flag=1;
    		break;
    		}
    		}
    		if(flag==1)
    		break;
    		head++;
    	}
    	cout<<d[tail-1].s+1;
    	return 0;
    }
    
    • 0
      @ 2023-4-6 20:26:38
      #include<bits/stdc++.h>
      using namespace std;
      struct zzh{
          int x;
          int y;
          int s;
      }t,g;
      queue<zzh>q;
      char a[41][41];
      int book[41][41],next[4][2]={{-1,0},{0,1},{1,0},{0,-1}},n,m,flag=0;
      int main()
      {
          cin>>n>>m;
          for(int i=1;i<=n;i++)
          {
              for(int j=1;j<=m;j++)
              {
                  cin>>a[i][j];
              }
          }
          t.x=1;
          t.y=1;
          t.s=1;
          q.push(t);
      	book[1][1]=1;
      	while(!q.empty())
      	{
      		t=q.front();
      		for(int k=0;k<4;k++)
      		{
      			int tx=t.x+next[k][0];
      			int ty=t.y+next[k][1];
      			if(tx<1||tx>n||ty<1||ty>m)
      			{
      				continue;
      				g.x=tx;
      				g.y=ty;
      				g.s=t.s+1;
      				q.push(g);
      				book[tx][ty]=1;
      				if(tx==n&&ty==m)
      				{
      					flag=1;
      					break;
      				}
      			}
      		}
      		if(flag==1)
      		{
      			break;
      		}
      		q.pop();
      	}
      	if(flag==1)
      	{
      		cout<<q.back().s;
      	}
      	return 0;
      }
      
      
      • -1
        @ 2023-4-6 20:32:48
        #include<bits/stdc++.h>
        using namespace std;
        struct zzh{
            int x;
            int y;
            int s;
        }t,g;
        queue<zzh>q;
        char a[41][41];
        int book[41][41],next[4][2]={{-1,0},{0,1},{1,0},{0,-1}},n,m,flag=0,ji;
        int main()
        {
            cin>>n>>m;
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=m;j++)
                {
                    cin>>a[i][j];
                }
            }
            t.x=1;
            t.y=1;
            t.s=1;
            q.push(t);
        	book[1][1]=1;
        	while(!q.empty())
        	{
        		t=q.front();
        		for(int k=0;k<4;k++)
        		{
        			int tx=t.x+next[k][0];
        			int ty=t.y+next[k][1];
        			if(tx<1||tx>n||ty<1||ty>m)
        			{
        				continue;
        			}
        			g.x=tx;
        			g.y=ty;
        			g.s=t.s+1;
        			q.push(g);
        			book[tx][ty]=1;
        			if(tx==n&&ty==m)
        			{
        				flag=1;
        				ji=g.s;
        				break;
        			}
        		}
        		if(flag==1)
        		{
        			break;
        		}
        		q.pop();
        	}
        	if(flag==1)
        	{
        		cout<<ji;
        	}
        	return 0;
        }
        
        • -1
          @ 2023-4-6 20:11:06
          #include<bits/stdc++.h>
          using namespace std;
          struct zzh{
              int x;
              int y;
              int s;
          }que[1601];
          char a[41][41];
          int book[41][41],next[4][2]={{-1,0},{0,1},{1,0},{0,-1}},n,m;
          int head=1,tail=1;
          int main()
          {
              cin>>n>>m;
              for(int i=1;i<=n;i++)
              {
                  for(int j=1;j<=m;j++)
                  {
                      cin>>a[i][j];
                  }
              }
              que[tail].x=1;
              que[tail].y=1;
              que[tail].s=1;
              tail++;
              book[1][1]=1;
              int flag=0;
              while(head<tail)
              {
              	for(int k=0;k<4;k++)
              	{
              		int tx=que[head].x+next[k][0];
              		int ty=que[head].y+next[k][1];
              		if(tx<1 || tx>n || ty<1 || ty>m)
          		    {
          			    continue;
          		    }
          		    if(a[tx][ty]=='.' && book[tx][ty]==0)
          		    {
          			    que[tail].x=tx;
          			    que[tail].y=ty;
          			    que[tail].s=que[head].s+1;
          			    tail++;
          			    book[tx][ty]=1;
          			    if(tx==n && ty==m)
          			    {
          			    	flag=1;
          			    	break;
          				}
          		    }
          		}
          		if(flag==1)
          		{
          			break;
          		}
          	}
          	if(flag==1)
          	{
          		cout<<que[tail-1].s;
          	}
          	return 0;
          }
          
          • -3
            @ 2022-10-6 14:54:16

            #include<bits/stdc++.h> using namespace std; bool pd; char a[101][101]; int b[101][101],k[4][2]={{1,0},{-1,0},{0,1},{0,-1}},n,m,h=1,t=1,sx,sy,ex,ey; struct que{ int x; int y; int bs; }; int main(){ struct que dl[100000]; cin>>n>>m; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j]; //cin>>sx>>sy>>ex>>ey; b[1][1]=1; dl[t].x=1; dl[t].y=1; dl[t].bs=1; t++; while(h<t){ for(int i=0;i<4;i++){ int tx=dl[h].x+k[i][0],ty=dl[h].y+k[i][1]; if(tx<1||tx>n||ty<1||ty>m)continue; else if(a[tx][ty]'#'||b[tx][ty]1)continue; else{ b[tx][ty]=1; dl[t].x=tx; dl[t].y=ty; dl[t].bs=dl[h].bs+1; t++; } if(txn&&tym){ pd=1; cout<<dl[t-1].bs; break; } }

            h++;
            }
            return 0;
            

            }

            • 1

            信息

            ID
            429
            时间
            1000ms
            内存
            128MiB
            难度
            8
            标签
            递交数
            350
            已通过
            62
            上传者