循环日程表问题——C++代码求解

#include 
#include 

constexpr size_t count = 8;
size_t table[count][count];

void copy_table(int ro, int rp, int co, int cp, int size)
{
    for (size_t i = 0; i < size; i++)
    {
        for (size_t j = 0; j < size; j++)
        {
            table[i + rp][j + cp] = table[i + ro][j + co];
        }
    }
}

void init_table()
{
    for (size_t i = 0; i < count; i++)
    {
        table[0][i] = i + 1;
    }
}

void fill_table(int r, int c, int size)
{
    if (size == 1)
    {
        return;
    }
    int s = size / 2;
    fill_table(r, c, s);
    fill_table(r, c + s, s);
    copy_table(r, r + s, c, c + s, s);
    copy_table(r, r + s, c + s, c, s);
}

void print_table()
{
    for (size_t i = 0; i < count; i++)
    {
        for (size_t j = 0; j < count; j++)
        {
            std::cout << std::setw(4) << table[i][j];
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
}

int main()
{
    init_table();
    fill_table(0, 0, count);
    print_table();
}
image.png

你可能感兴趣的:(循环日程表问题——C++代码求解)