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

codeforces 3A - Shortest path of the king

編輯:C++入門知識

 

 

 


[cpp] #include<stdio.h>  
#include<string.h>  
#include<queue>  
#define inf 0x3fffffff  
using namespace std; 
int map[65][65]; 
int sx,sy,ex,ey; 
int dis[10][10],link[10][10]; 
char str[8][3]={"D","R","U","L","RD","LU","LD","RU"}; 
int dir[8][2]={1,0,0,1,-1,0,0,-1,1,1,-1,-1,1,-1,-1,1}; 
struct node 

    int x,y,w; 
    friend bool operator < (node a, node b)    
    {   
        return a.w>b.w;     
    }   
}cur,next; 
int judge(int x,int y) 

    if(x>=1&&x<=8&&y>=1&&y<=8) 
        return 1; 
    return 0; 

void bfs() 

    priority_queue<node> Q; 
    int x,y,i,w,j; 
    for(i=0;i<9;i++) 
        for(j=0;j<9;j++) 
            dis[i][j]=inf; 
        cur.x=sx;cur.y=sy;cur.w=0; 
        dis[sx][sy]=0; 
        Q.push(cur); 
        while(!Q.empty()) 
        { 
            cur=Q.top(); 
            Q.pop(); 
            if(cur.x==ex&&cur.y==ey)return; 
            for(i=0;i<8;i++) 
            { 
                next.x=x=cur.x+dir[i][0]; 
                next.y=y=cur.y+dir[i][1]; 
                if(judge(x,y)==0)continue; 
                next.w=w=cur.w+1; 
                if(w<dis[x][y]) 
                { 
                    dis[x][y]=w; 
                    Q.push(next); 
                    link[x][y]=i; 
                } 
            } 
             
        } 

void prinf(int x,int y) 

    if(x==sx&&y==sy)return ; 
    int i=link[x][y]; 
    prinf(x-dir[i][0],y-dir[i][1]); 
    printf("%s\n",str[i]); 

int main() 

    char s1[5],s2[5]; 
    while(scanf("%s%s",s1,s2)!=-1) 
    { 
        sy=s1[0]-'a'+1; 
        sx=9-(s1[1]-'0'); 
        ey=s2[0]-'a'+1; 
        ex=9-(s2[1]-'0'); 
        bfs(); 
        printf("%d\n",dis[ex][ey]); 
        prinf(ex,ey); 
    } 
    return 0; 

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