论文网
English Papers
万事OK网
发表论文
 
 首页 > IT文章 > 程序设计 >
矩阵旋转算法的实现

[科技论文网] http://www.scipapers.com    2007-12-01  

    矩阵旋转算法的实现

     题目描述:将一个N*N方阵旋转四次,再回到原来的样子,过程如下(以N=3为例):

    123
    456
    789

    741
    852
    963

    987
    654
    321

    369
    258
    147

    123
    456
    789

    现要求编程模拟该过程。

    算法分析:

            对于该矩阵旋转,我们可采用类似堆栈的操作来实现,方法是定义两个数组,从数组1中按列取出(弹栈)数显示出来,并按行放入数组2中(压栈),然后从数组2中按原规则取出数据显示并放入数组1中,如此每进行一次操作我们所取的数组中的数据就会顺时针旋转90度,循环下去就可显示其旋转过程。

    该过程如下表所示:

    数组1
    147
    258
    369
    数组2
    789
    456
    123

    该算法源代码如下(C语言):

    int s[2][3][3];
    int c=1,i,a=0,b=1,m,h1[3],j;
    main()
    {for(i=0;i<=2;i++)
       for(j=0;j<=2;j++)
        s[0][i][j]=c++;
     for(i=0;i<=4;i++)
      { h1[1]=h1[2]=h1[0]=2;
        for(j=0;j<=2;j++)
        {for(m=0;m<=2;m++)
         {printf("%d\t",s[a][j][m]);
          s[b][m][h1[m]]=s[a][j][m];
          h1[m]-=1;
         }
         printf("\n");}
        a=!a;
        b=!b;
        printf("\n");
        }
    }

            第1行的s[2][3][3]三维数组中的s[0][][]做数组1,s[1][][]做数组2用a的值决定从哪个数组中取值,用b的值决定给哪个数组赋值,a,b均在0,1间变动即可依次从两数组中取值赋值。
            若要向左旋转该矩阵,则只需将第12行的s[b][m][h1[m]]换为s[b][2-m][2-h1[m]]即可。

        来源:

声明:本文由网友推荐或作者提交,版权归原作者所有,刊登此文仅为传播知识,展示研究成果,提高文章引用率。未经原作者授权,禁止用于任何形式的商业行为。科技论文网倡导尊重知识、尊重劳动、保护原创、知识共享。由于部分论文文章来于网络,文章作者不祥,请相关的原创作者与我们联系,以便加上您的署名。

  
矩阵旋转算法的实现
下面没有链接了     格雷码算法C源码
最新论文
·[程序设计]矩阵旋转算法的实现
·[程序设计]格雷码算法C源码
·[程序设计]凸壳串行算法
·[程序设计]常用算法设计方法:贪婪法
·[程序设计]递归实现数组元素相乘
·[程序设计]地图着色算法C语言实现
·[程序设计]链式实现的堆栈
·[程序设计]简单的遗传算法源代码
·[程序设计] 红黑树源代码
·[程序设计]二叉搜索树BSTree源码
 
 

搜索论文

Google
论文分类

论文网 论文发表网 论文 免费论文网 找论文网 毕业论文 中国论文网 英语论文 百度论文 聘教网 易搜
 免费发布论文    中国论文网 2008版权所有  业务联系:pinjiao@126.com