zoukankan      html  css  js  c++  java
  • 算法——棋盘覆盖问题

    #include<stdio.h>  

    int tile=0;//整型变量,记录L型骨牌的数量

    int Matrix[100][100];//定义数据结构

    void ChessBoard(int tr,int tc,int dr,int dc,int size)  

    {//tr和tc分别是棋盘左上角方格的行号、列号;dr和dc分别是特殊方格的行号、列号

    if(size==1)

    return;

    int t=tile++;//L型骨牌号,初值为0

    int s=size/2;//分割棋盘

    if(dr<tr+s&&dc<tc+s)//用L型骨牌号覆盖左上角子棋盘

    ChessBoard(tr,tc,dr,dc,s);// 特殊方格在此棋盘中

    else  

    {//特殊方格不在此棋盘中用,t号L型骨牌覆盖右下角

    Matrix[tr+s-1][tc+s-1]=t; // 覆盖本子棋盘中的其余方格

    ChessBoard(tr,tc,tr+s-1,tc+s-1,s);

    }  

    if(dr<tr+s&&dc>=tc+s)//用L型骨牌号覆盖右上角子棋盘

    ChessBoard(tr,tc,dr,dc,s);// 特殊方格在此棋盘中

    else  

    {//特殊方格不在此棋盘中用,t号L型骨牌覆盖左下角

    Matrix[tr+s-1][tc+s]=t;// 覆盖本子棋盘中的其余方格

    ChessBoard(tr,tc+s,tr+s-1,tc+s,s);

    }  

    if(dr>=tr+s&&dc<tc+s)//用L型骨牌号覆盖左下角子棋盘

    ChessBoard(tr+s,tc,dr,dc,s);// 特殊方格在此棋盘中

    else  

    {//特殊方格不在此棋盘中用,t号L型骨牌覆盖右上角

    Matrix[tr+s][tc+s-1]=t;// 覆盖本子棋盘中的其余方格

    ChessBoard(tr+s,tc,tr+s,tc+s-1,s);

    }  

    if(dr>=tr+s&&dc>=tc+s)//用L型骨牌号覆盖右上角子棋盘

    ChessBoard(tr+s,tc+s,dr,dc,s);// 特殊方格在此棋盘中

    else  

    {//特殊方格不在此棋盘中用,t号L型骨牌覆盖左上角

    Matrix[tr+s][tc+s]=t;// 覆盖本子棋盘中的其余方格

    ChessBoard(tr+s,tc+s,tr+s,tc+s,s);

    }   

    }  

    int main()

    {

    int size,r,c,row,col;  

     //memset(Matrix,0,sizeof(Matrix));

    for(int i=0;i<=100;i++)//初始化为零

    {

    for(int j=0;j<=100;j++)

    {

    Matrix[i][j]=0;

    }

    }  

    scanf("%d",&size);//输入棋盘大小

    scanf("%d%d",&row,&col);//输入特殊方格位置

    ChessBoard(0,0,row,col,size);  

    for (r = 0; r < size; r++)//输出棋盘覆盖结果

    {  

    for (c = 0; c < size; c++)

    {  

    printf("%2d ",Matrix[r][c]);

     }  

    printf(" ");

    }  

    return 0;

    }

    运行截图:

  • 相关阅读:
    内存管理简介之Buddy算法和slab分配
    进程通信方式介绍
    Linux内核网络栈实现分析(十一)驱动程序层(下)
    Linux内核网络协议栈深入分析(二)sk_buff的操作函数
    Linux内核网络协议栈深入分析(一)与sk_buff有关的几个重要的数据结构
    内核源码学习:伙伴算法
    寒假Day16Dinic模板更新+优化
    寒假Day20:数位dp
    寒假Day21:Catalan Square卡特兰数 JAVA写大数
    寒假Day17UVALive3231Fair Share(最大流+二分)
  • 原文地址:https://www.cnblogs.com/rourou123/p/8151461.html
Copyright © 2011-2022 走看看