1. 程式人生 > >【百鍊oj】2816:紅與黑

【百鍊oj】2816:紅與黑

描述有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫一個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入包括多個數據集合。每個資料集合的第一行是兩個整數W和H,分別表示x方向和y方向瓷磚的數量。W和H都不超過20。在接下來的H行中,每行包括W個字元。每個字元表示一塊瓷磚的顏色,規則如下
1)‘.’:黑色的瓷磚;
2)‘#’:白色的瓷磚;
3)‘@’:黑色的瓷磚,並且你站在這塊瓷磚上。該字元在每個資料集合中唯一出現一次。
當在一行中讀入的是兩個零時,表示輸入結束。
輸出對每個資料集合,分別輸出一行,顯示你從初始位置出發能到達的瓷磚數(記數時包括初始位置的瓷磚)。樣例輸入
6 9 
....#. 
.....# 
...... 
...... 
...... 
...... 
...... 
#@...# 
.#..#. 
0 0
樣例輸出
45
#include<stdio.h>
char map[20][20];
int main(){
    int mark(int,int,int,int);
    int row,line,i,j;
    while(scanf("%d %d",&line,&row)){
        if(row==0||line==0)break;
        scanf("\n");
        for(i=0;i<row;i++){
            gets(map[i]);
        }
             int x,y;
         for(i=0;i<row;i++){
            for(j=0;j<line;j++)
                if(map[i][j]=='@')x=i,y=j;
         }

         mark(x,y,row,line);
         int count=0;
         for(i=0;i<row;i++){
            for(j=0;j<line;j++)
                if(map[i][j]==0)count++;
         }
         printf("%d\n",count+1);
    }
}


int mark(int i,int j,int row,int line){
    if(i-1>=0&&map[i-1][j]=='.'){
        map[i-1][j]=0;
        mark(i-1,j,row,line);
    }
    if(j-1>=0&&map[i][j-1]=='.'){
        map[i][j-1]=0;
        mark(i,j-1,row,line);
    }
    if(i+1<row&&map[i+1][j]=='.'){
        map[i+1][j]=0;
        mark(i+1,j,row,line);
    }
    if(j+1<line&&map[i][j+1]=='.'){
        map[i][j+1]=0;
        mark(i,j+1,row,line);
    }
}

相關推薦

oj2816:

描述有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫一個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入包括多個數據集合。每個資料集合的第一行是兩個整數W和H,分別表示x方向和y方向瓷磚的數量。W和H都不超過

NOI OJ1818

1818:紅與黑 總時間限制: 1000ms 記憶體限制: 65536kB 描述 有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移

Bailian2816 DFS

2816:紅與黑 總時間限制: 1000ms 記憶體限制: 65536kB 描述 有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫一個程式,計算你總共能夠到達多少塊黑色的瓷磚。 輸入 包括多個數據集合。每個資料集合的第一行是兩個整數W和H,

華為 OJ 整數IP地址間的轉換

原理:ip地址的每段可以看成是一個0-255的整數,把每段拆分成一個二進位制形式組合起來,然後把這個二進位制數轉變成 一個長整數。 舉例:一個ip地址為10.0.3.193 每段數字             相對應的二進位制數 10                   0

數據壓縮JPEG標準原理解析

round 高頻 切割 基於 大小 image 生成 p s pan 轉載請註明出處:http://blog.csdn.net/luoshixian099/article/details/50392230 CSDN-勿在浮沙築高臺 為了滿足不同應用的需求,J

C/C++學院0831-類對象的異常/面試100題1-100

oid tdi 面試 mod get() ng- java article ron 類與對象的異常 Cpp異常 #include <iostream> #include <string.h> using namespace st

度圖表頁面引入多個圖表,讓其只適應

++ i++ top color win setoption 實例 get logs 【百度圖表】頁面引入多個圖表,讓其只適應 網上發現有個這樣的方法讓圖表自適應,window.onresize = myChart.resize; 但是發現好像只有最後一個有效,於是就有了

視覺SLAM14講ch4心得課後題答案僅供參考

參考 http sim 數學推導 數學 之間 沒有 sla per 學習心得: 在研究SLAM時候,除了對三維世界剛體運動表示外(ch3),由於噪聲的影響,還要進行對可能的位姿進行優化,而旋轉矩陣必須得是行列式為1的正交矩陣, 為了減少這種約束,我們希望通過李群和李代數

MySQL數據庫學習第九篇索引原理慢查詢優化

xxx 結構 復合 unix select查詢 全文搜索 等等 學習 獲取數據 一、介紹 1.什麽是索引? 一般的應用系統,讀寫比例在10:1左右,而且插入操作和一般的更新操作很少出現性能問題,在生產環境中,我們遇到最多的,也是最容易出問題的,還是一些復雜的查詢操作,因此對

度ARAndroiddemo工程使用手記

AR【百度AR】【Android】demo工程使用手記 demo工程獲取和註意事項 百度AR平臺地址:https://ar.baidu.com/testapply 技術文檔地址:https://ai.baidu.com/docs#/DuMixAR-Android-SDK/top AR內容管理地址:https

MATLAB深度學習神經網絡分類問題

簡單 clas alpha 學習 exp 輸出 問題 分類 ros 神經網絡與分類問題 1.多元分類   根據分類的數量確定輸出節點的數量是最可能得到良好效果的方法。輸出的類別表示可以使用one-hot編碼。通常情況下,二分類使用Sigmoid函數,多元分類使用Softm

逐夢AI深度學習計算機視覺應用實戰課程(BAT工程師主講,無人汽車,機器人,神經網絡)

bat 神經網絡 深度學習 深度學習框架 0基礎 http 提取 框架 以及 【逐夢AI】深度學習與計算機視覺應用實戰課程(BAT工程師主講,無人汽車,機器人,神經網絡)網盤地址:https://pan.baidu.com/s/1G0_WS-uHeSyVvvl_4bQnlA

C/C++開發函式指標回撥函式

C++很多類庫都喜歡用回撥函式,MFC中的定時器,訊息機制,hook機制等待,包括現在在研究的cocos2d-x中也有很多的回撥函式。 1.回撥函式 什麼是回撥函式呢?回撥函式其實就是一個通過函式指標呼叫的函式!假如你把A函式的指標當作引數傳給B函式,然後在B函式中通過A函式傳進來的這個指標

Python第三方包scikitlearn-KFoldStratifiedKFold的區別

KFold與StratifiedKFold的區別 class sklearn.model_selection.StratifiedKFold(n_splits=3, shuffle=False, random_state=None) Stratified K-Folds cro

面向物件林老師版:繼承派生(六)

一、初識繼承 1、什麼是繼承 繼承指的是類與類之間的關係,是一種什麼“是”什麼的關係,繼承的功能之一就是用來解決程式碼重用問題 繼承是一種建立新類的方式,在python中,新建的類可以繼承一個或多個父類,父類又可以成為基類或超類,新建的類稱為派生類或子類 2、python中類的繼承分為:單繼承和多繼承

LeetCode 簡單題75-區域檢索陣列不可變

宣告: 今天是第75道題。給定一個整數陣列  nums,求出陣列從索引 i 到 j  (i ≤ j) 範圍內元素的總和,包含 i,  j 兩點。以下所有程式碼經過樓主驗證都能在LeetC

極客時間資料結構演算法總結

【極客時間】資料結構與演算法總結: 02| 資料結構是為演算法服務的,演算法要作用在特定的資料結構之上。 20個最常用的最基礎的資料結構與演算法: 10個數據結構:陣列、連結串列、棧、佇列、散列表、二叉樹、堆、跳錶、圖、Trie樹 10個演算法:遞迴、排序、二分

度地圖度地圖指定省市進行描邊處理,省市外進行半透明遮蓋。

//指定省市進行描邊處理,省市外進行半透明遮蓋。 function getBoundary2(map,city){ var bdary = new BMap.Boundary(); bdary.get(city, function(rs){//獲取行政區域

度地圖度地圖上框出邊界線

程式碼: 一、建立地圖 建立地圖物件;設立中心點以及地圖級別。 var map = new BMap.Map("container"); map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 12); 二、新增地圖事件

大話資料結構04 棧佇列 筆記

《大話資料結構》 ——程傑 共463頁 筆記圈點主要內容,也請多多支援大話資料結構該書作者。 第 4 章 棧與佇列 111頁_定義 棧是限定在表尾進行插入和刪除操作的線性表。 佇列是隻允