關於 sicily1556 Finding Seats

題目描述:

給定一個矩形座位表的行數和列數,在一個矩形座位表中找到一個含有給定個空位的矩形 ,使它面積最小
例如
3 5 5

...XX

.X.XX

XX... 
答案是6

 

解法:

首先用int seatnum[305][305]表示從左上角到i,j所包含的空位置數

用函數inline int getseat(int i,int j,int ii,int jj)表示以i,j爲左上角,ii,jj爲右下角的矩形所包含的空位置數

用check[305][305][0]:表示掃描線i,j當前包含的位置數,check[305][305][1]表示掃描線i,j當前的頂部行

掃描過程:一行行掃描,對於每一行,對每個掃描區間單獨掃描,如果當前的掃描區間加上新行包含在掃描區間內的空座位數大於要求的座位數,則循環更新最小面積,得到最大的頂行check[305][305][1]所能在的位置

核心代碼:

 

本題代碼

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章