中南大學複試上機 水陸距離

2021-09-12 06:08:37 字數 1309 閱讀 1791

題目描述

給定乙個n x m的01矩陣,其中1表示陸地,0表示水域。對於每乙個位置,求出它距離最近的水域的距離是多少。   

矩陣中每個位置與它上下左右相鄰的格仔距離為1。 

輸入多組資料。 

第一行包含兩個整數,n和m。 

以下n行每行m個0或者1,代表地圖。 

資料保證至少有1塊水域。 

對於30%的資料,1 <= n, m <= 100   

對於100%的資料,1 <= n, m <= 800 

輸出輸出n行,每行m個空格分隔的整數。每個整數表示該位置距離最近的水域的距離。

樣例輸入

4 4  

0110

1111

1111

0110

樣例輸出

0 1 1 0  

1 2 2 1

1 2 2 1

0 1 1 0

這題的思想無非是dfs和bfs兩種。

我先寫乙個熟悉的dfs,但是時間超限了。

之後的bfs**會補上。

dfs的**:

#includeint a[802][802],book[802][802];

int min=999;

void dfs(int x,int y,int n,int m,int step),

, ,};

if(a[x][y]==0) }

}int main()

} int result[n+1][m+1];

for(i=1;i<=n;i++)

} for(i=1;i<=n;i++)

printf("\n"); }

} }

bfs的**還是超時:

#includestruct note;

int main(),

, ,

};while(scanf("%d%d",&m,&n)!=eof)

} struct note que[n*m+1];

int head = 1;

int tail = 1;

for(i=1;i<=m;i++)

for(j=1;j<=n;j++)

} while(headm||ty>n)

continue;

if(book[tx][ty]==0&&a[tx][ty]>0)

} head++;

} for(i=1;i<=m;i++)

}}

中南大學複試上機 飯卡

時間限制 1 sec 記憶體限制 128 mb 題目描述 csu本部食堂的飯卡有一種很詭異的設計 在購買之前判斷餘額。如果購買乙個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功 即使購買後卡上餘額為負 否則無法購買 即使金額足夠 所以大家都希望盡量使卡上的餘額最少。某天,食堂中有n種菜 ...

中南大學複試上機 容易的題

時間限制 1 sec 記憶體限制 128 mb 題目描述 大家都很關心考試難易程度。k老師出題有乙個規律,在出題之前,他會隨機寫下乙個字元 串,只要這個字串中能按順序找到e,a,s,y四個字母。他出題就會比較簡單。你拿到了這個 字串,請你告訴考試的題目難不難吧。輸入輸入資料有多組,每組佔一行,由乙個...

中南大學複試上機 最短路徑

題目描述 小王和小明是好朋友,兩人最開始各有乙個初始位置 p 和乙個恆定速度 v,從0時刻起開始,他們從初始位置以恆定速度開始行走,請告訴我行走過程中兩人的最短距離是多少。輸入第一行輸入t代表測試樣例數目。對於每個樣例,第一行包含四個整數 x1,y1,x2,y2,表示人的起點 x1,y1 x2,y2...