日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

百练#2802小游戏

發布時間:2024/1/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 百练#2802小游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述
一天早上,你起床的時候想:“我編程序這么牛,為什么不能靠這個賺點小錢呢?”因此你決定編寫一個小游戲。

游戲在一個分割成w * h個正方格子的矩形板上進行。如圖所示,每個正方格子上可以有一張游戲卡片,當然也可以沒有。

當下面的情況滿足時,我們認為兩個游戲卡片之間有一條路徑相連:

路徑只包含水平或者豎直的直線段。路徑不能穿過別的游戲卡片。但是允許路徑臨時的離開矩形板。下面是一個例子:

這里在 (1, 3)和 (4, 4)處的游戲卡片是可以相連的。而在 (2, 3) 和 (3, 4) 處的游戲卡是不相連的,因為連接他們的每條路徑都必須要穿過別的游戲卡片。

你現在要在小游戲里面判斷是否存在一條滿足題意的路徑能連接給定的兩個游戲卡片。
輸入
輸入包括多組數據。一個矩形板對應一組數據。每組數據包括的第一行包括兩個整數w和h (1 <= w, h <= 75),分別表示矩形板的寬度和長度。下面的h行,每行包括w個字符,表示矩形板上的游戲卡片分布情況。使用‘X’表示這個地方有一個游戲卡片;使用空格表示這個地方沒有游戲卡片。

之后的若干行上每行上包括4個整數x1, y1, x2, y2 (1 <= x1, x2 <= w, 1 <= y1, y2 <= h)。給出兩個卡片在矩形板上的位置(注意:矩形板左上角的坐標是(1, 1))。輸入保證這兩個游戲卡片所處的位置是不相同的。如果一行上有4個0,表示這組測試數據的結束。

如果一行上給出w = h = 0,那么表示所有的輸入結束了。
輸出
對每一個矩形板,輸出一行“Board #n:”,這里n是輸入數據的編號。然后對每一組需要測試的游戲卡片輸出一行。這一行的開頭是“Pair m: ”,這里m是測試卡片的編號(對每個矩形板,編號都從1開始)。接下來,如果可以相連,找到連接這兩個卡片的所有路徑中包括線段數最少的路徑,輸出“k segments.”,這里k是找到的最優路徑中包括的線段的數目;如果不能相連,輸出“impossible.”。

每組數據之后輸出一個空行。
樣例輸入

5 4
XXXXX
X X
XXX X
XXX
2 3 5 3
1 3 4 4
2 3 3 4
0 0 0 0
0 0

樣例輸出

Board #1:
Pair 1: 4 segments.
Pair 2: 3 segments.
Pair 3: impossible.

#include<iostream> #include<cstring> #define NA 10000 using namespace std; int visited[80][80]; int ei,ej,w,h,minl; int dire[4][2] = {{0,-1},{-1,0},{0,1},{1,0}};//左上右下 char board[80][80]; void llk(int si,int sj,int l,int f){int i,x,y;if(l > minl)return;if(si == ei && sj == ej){if(l < minl)minl = l;return;}for(i = 0;i < 4; ++i){x = si + dire[i][0];y = sj + dire[i][1];if((x >= 0 && x <= w + 1 && y >= 0 && y <= h + 1) && ((board[x][y] == ' ' && visited[x][y] == 0) || (board[x][y] == 'X' && x == ei && y == ej))){visited[x][y] = 1;if(f == i)llk(x,y,l,i);elsellk(x,y,l + 1,i);visited[x][y] = 0;}} } int main(){int i,j,bn,pn;bn = 0;while(1){scanf("%d%d",&h,&w);getchar();if(h == 0)break;bn++;printf("Board #%d:\n",bn);for(i = 0;i <= w + 1; ++i){for(j = 0;j <= h + 1; ++j){if((i == 0) || (i == w + 1) || (j == 0) || (j == h + 1))board[i][j] = ' ';else{scanf("%c",&board[i][j]);}}if(i >= 1 && i < w)getchar();}pn = 0;while(1){scanf("%d%d%d%d",&j,&i,&ej,&ei);memset(visited,0,sizeof(visited));if(i == 0){printf("\n");break; }pn++;minl = NA;llk(i,j,0,-1);if(minl == NA)printf("Pair %d: impossible.\n",pn);elseprintf("Pair %d: %d segments.\n",pn,minl);}}return 0; }

思路難點就是確定路徑長度,使用一個二維數組記錄方向(下標為方向,內容為xy方向上的變化),遞歸函數參數為:當前位置,當前路徑長度以及方向。
WA4次:
1.每組數據輸出一個空行!
2.坐標搞錯了xy坐標搞混…無語。

總結

以上是生活随笔為你收集整理的百练#2802小游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 福利片一区二区 | 亚洲av无码专区首页 | 永久av在线| 一起操17c| 男人日女人的网站 | 亚洲熟女综合一区二区三区 | 白白色在线观看 | 亚洲av成人无码久久精品老人 | 久热国产视频 | 三级黄色片免费 | 嫩草影院中文字幕 | 激情亚洲色图 | 性福宝av | 青青草综合 | 亚洲黄色在线播放 | 91色爱 | 哪里可以看免费毛片 | 欧美性大战久久久久久久 | 夜夜摸夜夜操 | 在线永久看片免费的视频 | 天天躁日日躁狠狠躁欧美 | 国产91精品久久久久久久网曝门 | 久久情趣视频 | 偷偷操网站| 国产午夜不卡 | 污视频在线观看免费 | 夜夜草影院 | 曰批女人视频在线观看 | 喷水少妇 | 丁香亚洲| 久久欧洲 | 国产睡熟迷奷系列精品视频 | 91亚洲国产成人久久精品网站 | 伊人影院在线视频 | 综合久久一区 | 91精品小视频 | 人人超碰97 | 成人h动漫精品一区二区下载 | 色男人av | 天天狠天天插天天透 | 美腿丝袜一区二区三区 | 国产一区免费看 | 欧美成人看片黄a免费看 | 亚洲精品国产精品乱码不卡√香蕉 | 成人三级在线视频 | 亚洲人成电影在线播放 | 在哪里可以看毛片 | 日本精品在线观看视频 | 秋霞影院午夜 | 久热中文| 婷婷亚洲综合 | 九月婷婷色| 夜夜摸夜夜操 | 久久青 | 97精品国产97久久久久久免费 | 中国成熟妇女毛茸茸 | 午夜剧场黄色 | 精品成人一区二区 | 中文字幕精品在线观看 | 亚洲超碰av| 亚洲四区在线 | 黄色av网站在线 | 亚洲综合图色 | xxxxx69| 久久久久久久久久综合 | 国产精品成人免费视频 | 欧美一区二区三区久久妖精 | www.狠狠插 | 国产精品va| 欧美一级黄色片 | 欧美a级片视频 | 欧美成人免费网站 | 欧美乱妇狂野欧美在线视频 | 超碰888 | 福利小视频 | 日本成人在线视频网站 | 日本一区二区三区在线观看视频 | 国产在线喷水 | 大尺度舌吻呻吟声 | 伊人网视频在线 | 羞羞在线观看 | 欧美私人影院 | 成人深夜小视频 | 国产一区二区三区在线观看 | 国产三级国产精品国产专区50 | 欧美人与物videos另类 | 国产精品久久久久三级无码 | 这里只有精品国产 | 成人xx视频 | 亚洲在线视频一区 | 亚洲一区影院 | 玖玖精品视频 | 伊人欧美 | 国产老女人精品毛片久久 | 玖玖爱国产| 日日干天天| 狠狠做 | 亚洲人一区 | 1024国产视频|