博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zigzag数组实现
阅读量:5283 次
发布时间:2019-06-14

本文共 585 字,大约阅读时间需要 1 分钟。

题目出自面试宝典8.3.2

 

题目描述: 输入n,求一个n*n的矩阵,规定矩阵沿45度线递增,形成一个zigzag数组(JPEG编码里去像素数据的排列顺序),请问如何用C++实现?

例如: n=2

0 1
2 3

n=3

0 1 5
2 4 6
3 7 8

n=5

0 1 5 6 14
2 4 7 13 15
3 8 12 16 21
9 11 17 20 22
10 18 19 23 24

分析每个矩阵中上三角矩阵,可以看到上三角矩阵的元素都满足:

s= i+j;

a[i][j] = s*(s+1)/2 +( (s%2==0)?i:j);

 

此外,下三角的矩阵的每个元素满足 a[i][j] + a[n-1-i][n-1-j] = N-1;

根据上面的分析,可以得到如下的程序:

#include 
using namespace std;int a[100][100]={
0};void draw(int n){ int i,j,s,N=n*n; for(i=0;i
>n) { draw(n); } return 0;}

程序的结果为:

 

转载于:https://www.cnblogs.com/double-win/p/3641657.html

你可能感兴趣的文章
Linux学习笔记(三)——权限管理
查看>>
python检测服务器是否ping通
查看>>
20172311 实验一《程序设计与数据结构》线性结构 实验报告
查看>>
Python--matplotlib绘图可视化知识点整理
查看>>
FTP知识集锦
查看>>
power designer简单教程
查看>>
Spring MVC静态资源处理(在applicationContex.xml文件中进行配置)
查看>>
POJ 3669 Meteor Shower【BFS】
查看>>
AOJ 0189 Convenient Location (Floyd)
查看>>
smarty模板自定义变量
查看>>
Windows下安装TensorFlow
查看>>
bootstraptable为行中的按钮添加事件
查看>>
POJ 1125 Stockbroker Grapevine 最短路 难度:0
查看>>
Topcoder 658 650 point
查看>>
HTML5新增
查看>>
第七节20181123
查看>>
第十七节20181215
查看>>
NYOJ-2 括号配对问题
查看>>
为什么static数据成员一定要在类外初始化?(转)
查看>>
IOS常用正则表达式
查看>>