題目描述
給定乙個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...