蛇形矩阵(Z形矩阵),C++实现

常见的蛇形矩阵是Z型矩阵,如:

1  2  4

3  5  7

6  8  9

仔细发觉规律可以发现:以这个方向的斜线/为循环对象时,坐标的和是不变的,因此可以通过坐标换算出对应的值,C++实现如下:

#ifndef _ZSTYLEARR_HPP_
#define _ZSTYLEARR_HPP_


#include 
#include 
#include 
using namespace std;

class ZStyleArr
{
public:
	ZStyleArr(int N) :width(N)
	{
		//初始化矩阵
		for (int i = 0; i < width; i++)
		{
			vector tempA(width, 0);
			zArr.push_back(tempA);
		}
	}
	~ZStyleArr(){}

	void display()
	{
		fillArr();
		cout << endl;
		for (int i = 0; i < width;i++)
		{
			for (int j = 0; j < width; j++)
				cout < width - 1 || rows < minRowIndex || colswidth - 1)
				{
					++crSum;					//上一斜线上的坐标已经填充完成
					if (filledNum >= threshNum)	//填充总数超过对角线后,行列坐标的最小值会递增(不再是0)	
					{
						++minRowIndex;
						++minColIndex;
					}
					break;
				}
			}
			//填充总数达到后,退出循环
			if (filledNum>=arrSize)
				break;
		}
	}

	const int width;		//矩形宽度
	vector>  zArr;
};
#endif
实现结果如图:

蛇形矩阵(Z形矩阵),C++实现_第1张图片


你可能感兴趣的:(笔试,蛇形矩阵,Z形矩阵,C++实现)