设为首页 加入收藏

TOP

C语言编程构造拉丁方阵和正交拉丁方阵组(八)
2018-03-02 06:57:27 】 浏览:1418
Tags:语言编程 构造 拉丁 方阵 正交
tion, hold, k);
                Lad[k][position[k][i-1]-1]=i;            //填充i
                hold[k][position[k][i-1]-1]=1;


                if (k!=N-1)  //还未将i填充完毕
                {
                    k++;      //继续试探下一行
                    continue;
                }
                else       
                {
                    return (1);  //i已填好,填充成功,返回1
                }
            }
        }
    }
}


int find(int i, int position[][N], int hold[][N], int k)
 {
    int j=position[k][i-1];


    for (j++; j<=N; j++)        //搜索k+1行下一个可以填充i的位置
        if (place(i, j, position, hold, k)==1)
            return (j);    //找到返回该位置的列标
    }
    return (0);  //没有下一个可以填充i的位置,返回0
 }


int place(int i, int j, int position[][N], int hold[][N], int k)
{
    int m, flag=0;


    for (m=0; m<k; m++)    //检查k+1行以上各行的i是否都和k+1行j列不在同一列
    {
        if (position[m][i-1]==j)
            flag=1;  //有i在同一列,k+1行j列位置不合法
    }


    if (hold[k][j-1]==1)  //k+1行j列已被填充,位置不合法
        flag=1;


    if (flag==1)
        return (0);  //位置不合法
    else
        return (1);  //位置合法
}


void L(int **p1, int *p2, int n)  //将p2指向的数组中的n个数的所有全排列存放在p1所指向的二维数组中
{
    if (n==1)
        *p1[0]=*p2;
    else
    {


      int **p3;
      int *p4;
      int c, d, f, k, m, i, j;


      d=n-1;
      c=B(d);


      p4=(int *) malloc(d*sizeof(int));


      p3=(int **) malloc(c*sizeof(int *));
      for (i=0; i<c; i++)
          p3[i]=(int *) malloc(d*sizeof(int));


      j=0; f=c;


      for (i=0; i<n; i++)
      {


          m=0;
          for (k=0; k<n; k++)
          {
              if (k==i)
                continue;
              *(p4+m)=*(p2+k);
              m++;
          }


          L(p3, p4, d);


          for (k=0; k<c; k++)
            for (m=0; m<d; m++)
                *(p1[k+j]+m+1)=*(p3[k]+m);


          while (j<f)
          {
         

首页 上一页 5 6 7 8 下一页 尾页 8/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言求解线性方程组 下一篇C语言重解经典回溯算法案例-迷宫..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目