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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

实现DFS之“农田灌溉”

發布時間:2025/6/15 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现DFS之“农田灌溉” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這也是一道利用了DFS的題目,先說下我的思路:用一個二維數組記錄每個字母所代表的含義(管道方向),用另一個二維數組記錄4個方向的變換坐標;隨后利用經典的DFS遞歸遍歷即可~(還要注意在方向的處理上前后要保持一致,否則很容易計算出錯 :| )


農田灌溉(Farm Irrigation) ??

題目描述:?

Benny有一大片農田需要灌溉。農田是一個長方形,被分割成許多小的正方形。每個正方形中都安裝了水管。不同的正方形農田中可能安裝了不同的水管。一共有11種水管,分別用字母A~K標明,如圖1所示。?


Benny農田的地圖是由描述每個正方形農田中水管類型的字母組成的矩陣。例如,如果農田的地圖為: ADC FJK IHE?

則農田中水管分布如圖2所示。?


某些正方形農田的中心有水源,因此水可以沿著水管從一個正方形農田流向另一個正方形農田。如果水可以流經某個正方形農田,則整個正方形農田可以全部灌溉到。 Benny想知道至少需要多少個水源,以保證整個農田都能被灌溉到? 例如,圖2所示的農田至少需要3個水源,圖中的圓點表示每個水源。 ?
輸入描述: ?
輸入文件中包含多個測試數據。每個測試數據的第1行為兩個整數M和N,表示農田中有M行,每行有N個正方形。接下來有M行,每行有N個字符。字符的取值為'A'~'K',表示對應正方形農田中水管的類型。當M或N取負值時,表示輸入文件結束。如果M和N的值為正數,則其取值范圍是1≤M, N≤50。 ?
輸出描述: ?
對輸入文件中的每個測試數據所描述的農田,輸出占一行,為求得的所需水源數目的最小值。 ?

樣例輸入: ?

2 2

DK

HF

3 3

ADC

FJK

IHE

-1 -1

樣例輸出:?

2 3


閑話少敘,直接上代碼+注釋~

Code:

[cpp]?view plaincopyprint?
  • #include<iostream>??
  • using?namespace?std;??
  • ??
  • #define?MAXN?50??
  • char?map[MAXN][MAXN];???//地圖??
  • int?M,?N;???????????????//M:農田行數,N:每行的正方形個數??
  • ??
  • int?dir[4][2]?=?{?{-1,?0},?{1,?0},?{0,?-1},?{0,?1}?};???//管道坐標變換的四個方向:對應的順序上下左右。??
  • int?dirO[11][4]?=?{??
  • ????{-1,?0,?-1,?0},?{-1,?0,?0,?1},?{0,?1,?-1,?0},??
  • ????{0,?1,?0,?1},?{-1,?1,?0,?0},?{0,?0,?-1,?1},??
  • ????{-1,?0,?-1,?1},?{-1,?1,?-1,?0},?{0,?1,?-1,?1},??
  • ????{-1,?1,?0,?1},?{-1,?1,?-1,?1}??
  • ????};??????//每種農田塊對應的4個管道方向(-1為左或上、1為右或下、0為沒有)。??
  • ??
  • void?DFS(int?x,?int?y)??
  • {??
  • ????int?xx,?yy;??
  • ????char?temp?=?map[x][y];??????//暫存當前農田塊的形狀,便于后面的比較~??
  • ????map[x][y]?=?'Y';????????????//覆蓋原來農田為已遍歷??
  • ????for(int?i?=?0;?i?<?4;?i++)??
  • ????{??
  • ????????//計算下一個方向的坐標。??
  • ????????xx?=?x?+?dir[i][0];???????
  • ????????yy?=?y?+?dir[i][1];??
  • ????????if(xx<0?||?xx>=MAXN?||?yy<0?||?yy>=MAXN)?continue;??????//越界,跳至下一個方向的判斷??
  • ??????????
  • ????????//方向所代表的值:上0、下1、左2、右3。??
  • ??????
  • ????????//如果向上走(0)或向左走(2),比如向左走則判斷原坐標的“左”管道和下一個方向坐標的“右”管道,方向所代表的值+1??
  • ????????if(i?==?0?||?i?==?2)??????
  • ????????{//若相鄰兩塊農田管道能“接上”,即管道方向對應的值之積為-1??
  • ????????????if(map[xx][yy]!='Y'?&&?dirO[temp-'A'][i]*dirO[map[xx][yy]-'A'][i+1]==-1)?DFS(xx,?yy);??
  • ????????}??
  • ????????//否則為向下走(1)或向右走(3),比如向下走則判斷原坐標的“下”管道和下一個方向坐標的“上”管道。對應方向所代表的值-1??
  • ????????else?if(map[xx][yy]!='Y'?&&?dirO[temp-'A'][i]*dirO[map[xx][yy]-'A'][i-1]==-1)?DFS(xx,?yy);??
  • ????}??
  • }??
  • int?main()??
  • {??
  • ????int?i,?j;??
  • ????int?count;??
  • ????while(scanf("%d%d",?&M,?&N))??
  • ????{??
  • ????????count?=?0;??
  • ????????if(M?<?0?||?N?<?0)?break;??
  • ????????for(i?=?0;?i?<?M;?i++)?scanf("%s",?map[i]);??????????//以行為單位為map地圖賦值??
  • ????????//遍歷地圖、遞歸計數??
  • ????????for(i?=?0;?i?<?M;?i++)?????????????????????
  • ????????????for(j?=?0;?j?<?N;?j++)??
  • ????????????????if(map[i][j]?!=?'Y')?{?DFS(i,?j);?count++;?}??
  • ????????printf("%d\n",?count);??
  • ????}??
  • ????return?0;??
  • }??

  • 運行結果:


    如有Bug,歡迎拍磚~ ?:)

    總結

    以上是生活随笔為你收集整理的实现DFS之“农田灌溉”的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 光溜溜视频素材大全美女 | 成年人免费观看视频网站 | 牛牛精品一区二区 | 97在线视频免费 | 久久精品aⅴ无码中文字字幕重口 | 麻豆出品| 老版k8经典电影 | 色吧在线观看 | 亚洲麻豆 | 欧美乱码视频 | 国产精品扒开腿做爽爽爽a片唱戏 | 日韩在线观看免费av | 色婷婷国产精品久久包臀 | 蜜臀av性久久久久av蜜臀妖精 | 人妻巨大乳hd免费看 | 男女被到爽流尿 | 美女扒开腿让男人操 | 日日干夜夜拍 | 久久网站视频 | 欧美黑人又粗又大的性格特点 | 不卡二区 | 五月婷婷狠狠干 | 亚洲日本天堂 | 67194成人在线 | 国产午夜一区二区三区 | 伊人久久中文 | 精品国产乱码久久久久久88av | 欧美激情综合五月色丁香 | 婷婷激情六月 | 亚洲欧美日韩一区二区 | 色哟哟在线播放 | 秋葵视频在线 | 精品日韩一区二区三区 | 成人乱人乱一区二区三区一级视频 | 久久国产精品精品国产 | 中文字幕人妻互换av久久 | 91精彩视频在线观看 | 国产精品自拍一区 | 欧美a级肉欲大片xxx | 色婷婷狠 | 色版视频| 国产精品福利小视频 | 成人精品视频一区二区三区尤物 | 国产成人精品一二三区 | 免费欧美黄色片 | 欧美日韩免费看 | 青青青青青草 | 爱情岛论坛永久入址在线 | 午夜aaa| 亚洲欧美在线成人 | 美女张开腿露出尿口 | 超碰在线一区 | 国产一级片麻豆 | 欧美丝袜一区二区 | 亚洲激情综合 | 我的丝袜美腿尤物麻麻 | 成人a级片| 97久久久久久久久久 | 最新欧美大片 | 青青青国产| 国产乱子伦精品无码专区 | 久久免费视频99 | 毛片网站在线看 | 亚洲好看站 | 自拍偷拍另类 | www.毛片.com | 亚欧中文字幕 | 欧美交换配乱吟粗大25p | 欧美日韩精品一二三区 | 老熟女高潮喷水了 | 性一交一乱一色一免费无遮挡 | 美女免费黄色 | 欧美黄色一级大片 | 国产综合在线观看 | 污污网址在线观看 | 色视频国产 | 精品欧美国产 | 口爆吞精一区二区三区 | 成人在线免费高清视频 | 久久爱网 | 日本www高清| 日韩成人精品一区二区 | 美国成人av| 欧美影院一区二区 | 欧美 国产 日本 | 欧美精品一区二区三区在线 | 中国成熟妇女毛茸茸 | 精品久久久久久久久久久久久久久 | 免费成人精品 | 日韩欧美国产片 | kk视频在线观看 | 日本黄色a级片 | 蜜桃臀av | 自拍偷拍第3页 | jizzjizz日本免费视频 | 亚洲精品影院在线 | 看a网站 | 亚洲一区二区三区在线观看视频 | 成人毛片视频免费看 |