本文主要是介绍Z字形编排,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
分三种情况:
1,如果二维数组中的元素matrix[i][j]中纵坐标j是偶数,且i=0或i=7,那么遍历路径在矩阵中的走向就水平向右移动一格;
2,如果二维数组中的元素matrix[i][j]中纵坐标i是奇数,且j=0或j=7,那么遍历路径在矩阵中的走向就垂直向下移动一格;
3,二维数组中的元素matrix[i][j]的纵坐标和i+j是偶数,则遍历路径在矩阵中的走向就是右上角移动一格;否则,若i+j是奇数,则遍历路径中走向向右下角移动一格
代码:
#include<iostream>
#include<iomanip>
using namespace std;
#define SIZE 8
int main()
{
int matrix[SIZE][SIZE] = {0};
int a[SIZE][SIZE] = {0};
int i,j,x,y,value = 0;
int *p;
p = &matrix[0][0];
//初始化矩阵
for(i=0;i<SIZE;i++)
{
*p++ = i;
}
//打印原始矩阵
cout<<"原始矩阵如下:"<<endl;
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
cout<<setw(4)<<*(*(matrix+i)+j);
cout<<endl;
}
i=0,j=0;
//进行Z字形排列
for(x=0;x<SIZE;x++)
for(y=0;y<SIZE;y++)
{
*(*(a+i)+j) = *(*(matrix+x)+y);
if((i==SIZE-1 || i==0) && j%2==0)
{
j++;
continue;
}
if((j==0 || j==SIZE-1) && i%2 ==1)
{
i++;
continue;
}
if((i+j)%2 == 0)
{
i--;
j++;
}
else if((i+j)%2 == 1)
{
i++;
j--;
}
}
cout<<endl<<"经过Z字形编排后的矩阵如下"<<endl;
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
cout<<setw(4)<<*(*(a+i)+j);
cout<<endl;
}
return 0;
}
这篇关于Z字形编排的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!