算法学习之—— 分治算法 L型骨牌

算法学习之—— 分治算法 L型骨牌_第1张图片

 

算法学习之—— 分治算法 L型骨牌_第2张图片

 

实现代码:

#include 
#define n 4
using namespace std;
static int tile = 1;
int a[n][n];
void chessboard(int tr,int tc,int dr,int dc,int size)
{
    if(size==1)
    return;
    int t=tile++;
    int s=size/2;
    if(dr=tc+s)
          chessboard(tr,tc+s,dr,dc,s);
        else
        {
            a[tr+s-1][tc+s]=t;
            chessboard(tr,tc+s,tr+s-1,tc+s,s);
        }
        if(dr>=tr+s&&dc=tr+s&&dc>=tc+s)
            chessboard(tr+s,tc+s,dr,dc,s);
              else
              {
                  a[tr+s][tc+s]=t;
                  chessboard(tr+s,tc+s,tr+s,tc+s,s);
              }
}

int main()
{
  chessboard(0,0,0,0,n);
  for(int i=0;i

 

你可能感兴趣的:(算法)