程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu1242 Rescue

hdu1242 Rescue

編輯:C++入門知識

[cpp]
#include<iostream> 
#include<queue> 
using namespace std; 
 
char mp[201][201]; 
int m,n,dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; 
 
struct point 

    int x,y,step; 
    friend bool operator <(point t1,point t2) 
    { 
        return t1.step>t2.step; 
    } 
}; 
 
void bfs(point S) 

    int i; 
    point t,tt; 
    priority_queue<point>Q; 
    Q.push(S); 
    while(!Q.empty()) 
    { 
        t=Q.top(); 
        Q.pop(); 
        for(i=0;i<4;i++) 
        { 
            tt.x=t.x+dir[i][0];tt.y=t.y+dir[i][1];  tt.step=t.step+1; 
            if(tt.x<1||tt.x>m||tt.y<1||tt.y>n||mp[tt.x][tt.y]=='#') continue; 
            if(mp[tt.x][tt.y]=='r') {printf("%d\n",tt.step);return;} 
            if(mp[tt.x][tt.y]=='x') tt.step++; 
             
            mp[tt.x][tt.y]='#'; 
            Q.push(tt); 
        } 
    } 
    printf("Poor ANGEL has to stay in the prison all his life.\n"); 
    return; 

 
int main() 

    int i,j; 
    point S; 
     
    while(scanf("%d%d",&m,&n)!=EOF) 
    { 
        getchar(); 
        for(i=1;i<=m;i++) 
        { 
            for(j=1;j<=n;j++) 
            { 
                scanf("%c",&mp[i][j]); 
                if(mp[i][j]=='a') 
                { 
                    S.x=i; 
                    S.y=j; 
                    S.step=0; 
                } 
            } 
            getchar(); 
        } 
        bfs(S); 
    } 
    return 0; 

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved