生活随笔
收集整理的這篇文章主要介紹了
【分治算法-02】算法经典问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
算法經(jīng)典問題
棋盤覆蓋問題
問題描述:
自我理解:對于僅存在一個奇異點,想到奇異點的填充肯定可以通過一個“L”形狀構(gòu)成一個正方形。我們可以通過不斷縮小方格尺寸(我們的目標(biāo)是每一個縮小尺寸到4?4的小方格中都有一個“認(rèn)為規(guī)定的奇異點,這些相連奇異點同時也能構(gòu)成一個"L“形狀,但也可以想成是我們之前通過"L"模型劃分的”人為奇異點“),因為之可能存在有限種情況。不好分析L的擺放模式,但是我們可以構(gòu)造”奇異點“。全部分清奇異點存在的種類,然后再通過”L“形去填充這些空白的”格子“。受到啟發(fā)于這個寶藏博客”棋盤覆蓋問題的圖形解答“
#include <stdio.h>
#define MaxValue 100
void chessboard(int tx
,int ty
,int x
,int y
,ing size
)
{int s
=gupai
++;int mid
= size
/2;if(size
==1)return;if(tx
<x
+mid
&& ty
<y
+mid
){chessboard(tx
,ty
,x
,y
,mid
);}else{QiPan
[x
+mid
-1][y
+mid
-1] = s
;chessboard(tx
+mid
-1,ty
+mid
-1,x
,y
,mid
);}if((tx
<x
+mid
) && (ty
>=y
+mid
)){chessboard(tx
,ty
,x
,y
+mid
,mid
);}else{QiPan
[x
+mid
-1][y
+mid
] = s
;chessboard(x
+mid
-1,y
+mid
,x
,y
+mid
,mid
);}if(tx
>=x
+mid
&&ty
<y
+mid
){chessboard(tx
,ty
,x
+mid
,y
,mid
);}else{QiPan
[x
+mid
][y
+mid
-1] = s
;chessboard(x
+mid
,y
+mid
-1,x
+mid
,y
,mid
);}if((tx
>=x
+mid
)&&(ty
>=y
+mid
)){chessboard(tx
,ty
,x
+mid
,y
+mid
,mid
);}else {QiPan
[x
+mid
][y
+mid
] = s
;chessboard(x
+mid
,x
+mid
,x
+mid
,y
+mid
,mid
);}
int main
()
{int tx
,ty
,x
=0,y
=0,size
;int QiPan
[MaxValue
][MaxValue
];int gupai
=0;scanf("%d %d %d",&tx
,&ty
,&size
);chessboard(tx
,ty
,x
,y
,size
);
}
總結(jié)
以上是生活随笔為你收集整理的【分治算法-02】算法经典问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。