拉丁方阵C实现

#include “stdio.h”
#define  N  3

static int a[N][N], count;

bool legal(int row, int col)
{
    int i;
    for(i = 0; i < row; i++)
    {
        if(a[i][col] == a[row][col])
            return false;
    }
    for(i = 0; i < col; i++)
    {
        if(a[row][i] == a[row][col])
            return false;
    }
    return true;
}

void trial(int row, int col)
{
    int i, j;
    if(row == N)
    {       
        for(i = 0; i < N; i++)
        {
            for(j = 0; j < N; j++)
                printf(“%5d”, a[i][j]);
   printf(“/n”);
        }
    }
    for(i = 1; i <= N; ++i)
    {
        a[row][col] = i;
        if(legal(row, col))
            trial((row*N+col+1)/N, (row*N+col+1)%N);
    }
}

void main()
{
    trial(0, 0);
}

    原文作者:拉丁方阵问题
    原文地址: https://blog.csdn.net/jim20/article/details/3954113
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞