国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

CSU-1511 殘缺的棋盤 解題報告

2019-11-08 02:40:22
字體:
來源:轉載
供稿:網友

  這是第一道我自己獨立解決的BFS題,也讓我充分的掌握了BFS的代碼模板,雖然是一道水題,但對我還是蠻有意義的。

  本題的思路也是非常的簡單,直接利用BFS通過廣搜找到最小路徑就OK了,中間注意標記已走過的路(和DFS不同,不用還原)還有那個被鎖定的格子。

代碼如下:

#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>using namespace std;int r1,c1,r2,c2,r3,c3,head,flag,tail,tx,ty;int vis[9][9];int dx[8]={-1,-1,-1,0,0,1,1,1};int dy[8]={-1,0,1,-1,1,-1,0,1};int cnt=0;struct node{    int x,y,f,s;}a[200];void bfs(){   head=1;   tail=1;   flag=0;   a[tail].x=r1;   a[tail].y=c1;   a[tail].s=0;   tail++;   while(head<tail)   {       for(int k=0;k<8;k++)       {           tx=a[head].x+dx[k];           ty=a[head].y+dy[k];           if(tx==r3&&ty==c3||tx<1||ty<1||tx>8||ty>8)            continue;          if(vis[tx][ty]==0)            {                vis[tx][ty]=1;                a[tail].x=tx;                a[tail].y=ty;                a[tail].s=a[head].s+1;                tail++;            }           if(tx==r2&&ty==c2)            {               flag=1;               break;            }            //cout<<tail<<endl;       }        if(flag)            break;     head++;   }   cout<<"Case "<<++cnt<<": "<<a[tail-1].s<<endl;}int main(){    int T=10010;    while(scanf ("%d%d%d%d%d%d",&r1,&c1,&r2,&c2,&r3,&c3)==6)    {        memset(vis,0,sizeof(vis));        vis[r1][c1]=1;        bfs();    }    return 0;}這題當然也可以用隊列去做,不過我現在更喜歡這種做法。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 栾城县| 汝南县| 咸丰县| 霍城县| 大英县| 西昌市| 哈巴河县| 西丰县| 德江县| 郓城县| 临高县| 扎鲁特旗| 大悟县| 获嘉县| 长垣县| 黑龙江省| 兖州市| 盐津县| 临清市| 开鲁县| 龙川县| 依兰县| 大理市| 余江县| 苏尼特右旗| 武隆县| 泰兴市| 杂多县| 台前县| 天柱县| 伊通| 新闻| 延庆县| 通道| 易门县| 惠安县| 景东| 蓝田县| 上饶市| 柘城县| 博乐市|