藍(lán)橋杯:全球變暖

你有一張某海域NxN像素的照片偿短,"."表示海洋、"#"表示陸地馋没,如下所示:
.......
.##....
.##....
....##.
..####.
...###.
.......
其中"上下左右"四個方向上連在一起的一片陸地組成一座島嶼翔冀。例如上圖就有2座島嶼。
由于全球變暖導(dǎo)致了海面上升披泪,科學(xué)家預(yù)測未來幾十年纤子,島嶼邊緣一個像素的范圍會被海水淹沒。具體來說如果一塊陸地像素與海洋相鄰(上下左右四個相鄰像素中有海洋)款票,它就會被淹沒控硼。
例如上圖中的海域未來會變成如下樣子:
.......
.......
.......
.......
....#..
.......
.......
請你計算:依照科學(xué)家的預(yù)測,照片中有多少島嶼會被完全淹沒卡乾。

【輸入格式】
第一行包含一個整數(shù)N谍椅。 (1 <= N <= 1000)
以下N行N列代表一張海域照片。
照片保證第1行、第1列、第N行、第N列的像素都是海洋。

【輸入樣例】
7
.......
.##....
.##....
....##.
..####.
...###.
.......

【輸出樣例】
1

分析:有一種情況是一座島嶼部分淹沒后變?yōu)閮勺鶏u嶼力图,因此計算兩遍島嶼數(shù)求差的做法是不對的吕喘。我的思路是,標(biāo)記不被淹沒的陸地(可以想象為島嶼上的“山”),無山的島嶼即是會被完全淹沒的島嶼辕漂。
具體做法:標(biāo)記完成后遍歷map鲸阻,從未被淹沒的地塊開始dfs島嶼,同時淹沒經(jīng)過的地塊性置,若沒有遇到過標(biāo)記地塊,則計數(shù)+1之碗。

import java.util.Scanner;

public class Main8 {

    static boolean[][] map, map2;
    
    public static void main(String[] args) {
        //初始化地圖博敬,由于內(nèi)存限制偏窝,用bit表示海洋或陸地
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();      
        map = new boolean[n][n];
        for(int i=0; i<n; ++i)
        {
            String s = sc.nextLine();
            for(int j=0; j<n; ++j)
            {
                if(s.charAt(j)=='.')
                    map[i][j]=false;
                else
                    map[i][j]=true;
            }
        }
        sc.close();
        //map2用于標(biāo)記不被淹沒的陸地
        map2 = new boolean[n][n];
        for(int i=0; i<n; ++i)
            for(int j=0; j<n; ++j)
                map2[i][j] = false;
        for(int i=0; i<n; ++i)
            for(int j=0; j<n; ++j)
                if(map[i][j])
                    if(map[i-1][j]&&map[i+1][j]&&map[i][j-1]&&map[i][j+1])
                        map2[i][j]=true;
        
        int cnt=0;
        for(int i=0; i<n; ++i)
            for(int j=0; j<n; ++j)
                if(map[i][j])
                    cnt+=dfs(i,j)?1:0;
        System.out.print(cnt);
    }
    
    public static boolean dfs(int i, int j)
    {
        boolean flag = true;
        map[i][j]=false;
        if(map2[i][j])
            flag = false;
        if(map[i-1][j]) flag &= dfs(i-1, j);
        if(map[i+1][j]) flag &= dfs(i+1, j);
        if(map[i][j-1]) flag &= dfs(i, j-1);
        if(map[i][j+1]) flag &= dfs(i, j+1);
        return flag;
    }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宛裕,老刑警劉巖屁奏,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件识颊,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桨昙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炊甲,“玉大人剑逃,你說我怎么就攤上這事萤捆⊙媲幔” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我苗踪,道長朋截,這世上最難降的妖魔是什么饲宿? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任筹裕,我火速辦了婚禮,結(jié)果婚禮上棵逊,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好称近,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布氓轰。 她就那樣靜靜地躺著,像睡著了一般撒穷。 火紅的嫁衣襯著肌膚如雪端礼。 梳的紋絲不亂的頭發(fā)上蚀同,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天衰猛,我揣著相機(jī)與錄音啡省,去河邊找鬼方库。 笑死徐鹤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炭晒,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼识樱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了震束?” 一聲冷哼從身側(cè)響起怜庸,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垢村,沒想到半個月后割疾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡肝断,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年杈曲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胸懈。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖恰响,靈堂內(nèi)的尸體忽然破棺而出趣钱,到底是詐尸還是另有隱情,我是刑警寧澤胚宦,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布首有,位于F島的核電站燕垃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏井联。R本人自食惡果不足惜卜壕,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烙常。 院中可真熱鬧轴捎,春花似錦、人聲如沸蚕脏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驼鞭。三九已至秦驯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挣棕,已是汗流浹背译隘。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留洛心,地道東北人细燎。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像皂甘,于是被迫代替她去往敵國和親玻驻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • One 1 the [e?, ei:] art.這偿枕,那 ad.[用于比較級璧瞬;最高級前] 2 be [bi:,bi]...
    梁培林閱讀 9,261評論 0 10
  • 我的童年時光有大風(fēng)車,有金龜子渐夸,也有櫻桃小丸子嗤锉,她給我?guī)淼目鞓窌r光,溫暖了我整個童年墓塌,小丸子溫馨的大家庭瘟忱,是我最...
    夢里尋花閱讀 568評論 0 1
  • 我坐在荷塘的小船里, 你躲在窗口苫幢, 望我在離你遙遠(yuǎn)的地方 寫著長長的信访诱, 把信放在小溪里, 信在水波里閃光 每一次...
    張新怡閱讀 130評論 0 3
  • 竹陰小徑韩肝,鮮花簇簇触菜,淡淡清香,棉麻布衣 哀峻,清新小院……久久沉浸夢中涡相,感動于自己的內(nèi)心深處……哲泊。周六,不用上...
    孔素霞閱讀 229評論 0 2
  • 今天是今天第一天上班催蝗,虛歲27歲的我切威,還是單身,在自己的計劃了丙号,不知道未來會不會遇到自己喜歡的人了先朦,跟家里人說20...
    傻蛋期望溫暖閱讀 84評論 0 0