【算法】 输入n 输出一个n*n的zigzag矩阵 利用c++实现
2014-03-27 13:31
656 查看
int main() { int N; cin>>N; int **a = new int * ; if(a==0) return 0;//如果没有申请到空间 for(int i=0;i<N;i++) { a[i]= new int ; if(a[i] == 0) return 0; } a[0][0]=0; for(int i=1;i<N;i++)//初始化第一行 { if(i%2==1)//根据第一行的变化规律 { a[0][i]=a[0][i-1]+1; } else { a[0][i]=a[0][i-1]+i+i; } } for(int i=1;i<N;i++)//初始化最后一列 { if(i%2==1)//根据最后一列的变换规律 { a[i][N-1]=a[i-1][N-1]+(N-i)*2; } else { a[i][N-1]=a[i-1][N-1]+1; } } //中间的部分,利用左上方的递归。 //可以分为两类,当i+j是奇数是,zigzag方向是从右往左,从上往下.反之亦然 for(int i=1;i<N;i++) for(int j=0;j<N-1;j++) { if ((i+j)%2==0) a[i][j]=a[i-1][j+1]-1; else a[i][j]=a[i-1][j+1]+1; } //print out the result for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { cout<<a[i][j]<<" "; } cout<<endl; } }
相关文章推荐
- 对面试题“输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?”的理解
- 面试例题:输入n,求一个n x n矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现? (中国台湾著名硬件公司2007年11月面试题)
- C++实现:双输入单输出系统:建立一个 感知器网络,实现上述样本的分类。计算出相应的网络权值矩阵w。
- 设计一个程序,从键盘上输入若干字符串,利用算法库中的查找函数对给定的字符串进行查找,将查找后的结果输出
- 【我的算法日记】请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。
- 第九周C++任务四。建立一个二维数组类Douary,完成矩阵的输入、输出、加、减、相等判断等操作
- C语言利用switch语句实现输入一个字母,输出它前后紧挨着的字母
- 【每天算法1】:用java 语言实现,输入一个数,就相应地输出的几维数组
- C++实现输入一个整数,将各位数字反转后输出
- 问题:利用输入输出流重载实现一个整数数组的输入和输出。 要求:输入一个数组大小 及 所有元素的值,排序后输出该数组的所有元素。
- 《C++第九周实验报告4-1》---建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数, //完成矩阵的输入、输出、加、减、相等判断等操作。
- 利用C++将输入一个字符串把其中的字符串逆向输出
- c++第九周【任务4】建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。
- 用C++实现,输入一个日期,输出它是一年中的第几天。
- 用c++实现一个n*n矩阵,矩阵沿着45度递增,形成zigzag数组
- 用C++实现,输入一个日期,输出它是一年中的第几天。
- 利用C++实现矩阵的相加/相称/转置/求鞍点
- 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)
- 设计算法来统计一个输入字符串中所包含的整数个数,并输出这些数
- C++完成一个大数类的+、-和输入、输出