c和c++的一些训练题(10)(打印螺旋方阵)
2015-03-19 22:57
344 查看
问题的提出:编写螺旋方阵。其中螺旋方阵形式如下:
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
设row,column分别代表行、列坐标,变量p从1到n2将p依次存入数组a[row][column]中,要确定row、colomn的变化情况。分析:建立一个二维动态数组,建立方法见前一篇文章,然后观察方阵的第一列跟第二列之间的关系,第n行和第n-1行之间的关系,第n列和第n-1列之间的关系,第一行跟第二行之间的关系,根据他们之间的关系,列出表达式就能得到最终结果。大家如果有好的想法可以共同探讨,我参考了下别人的想法,但大部分思路还是自己原创的。
代码:
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
设row,column分别代表行、列坐标,变量p从1到n2将p依次存入数组a[row][column]中,要确定row、colomn的变化情况。分析:建立一个二维动态数组,建立方法见前一篇文章,然后观察方阵的第一列跟第二列之间的关系,第n行和第n-1行之间的关系,第n列和第n-1列之间的关系,第一行跟第二行之间的关系,根据他们之间的关系,列出表达式就能得到最终结果。大家如果有好的想法可以共同探讨,我参考了下别人的想法,但大部分思路还是自己原创的。
代码:
// test4.cpp : 定义控制台应用程序的入口点。 //这是打印的最终目标 //1 12 11 10 //2 13 16 9 //3 14 15 8 //4 5 6 7 #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int n; cout<<"请输入方阵的维数:"; cin>>n; cout<<"打印二维数组:"<<endl; //声明动态二维数组 int **data; data=new int * ; for(int i=0; i<n; i++) { data[i]=new int ; } //初始化二维数组 for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { data[i][j]=0; } } //对二维数组赋值 int m=1; int i,j; int round=1; for(i=0; i<= n/2; i++) { //左列 for(j=0; j<(n-2*(round-1)); j++)//0~4 0~2 { data[j+round-1][round-1]=m++; } //下行 for(j=0; j<(n-2*(round-1)-1); j++) //0~3 { data[n-round][j+round]=m++; } //右列 for(j=0; j<(n-2*(round-1)-1); j++) { data[n-j-round-1][n-round]=m++; } //上行 for(j=0; j<(n-2*round); j++) { data[round-1][n-j-round-1]=m++; } round++; } //打印二维数组 for(i=0; i<n; i++) { for(int j=0; j<n; j++) { cout<<left<<setw(3)<<data[i][j]<<" "; } cout<<endl; } //销毁二维数组 for(i=0; i<n; i++) { delete[] data[i]; } delete[] data; system("pause"); return 0; }结果:
相关文章推荐
- C++ 简洁打印 N阶螺旋矩阵
- c和c++的一些训练题(1)(冒泡法排序运动员成绩)
- 用C语言实现顺时针螺旋方阵的打印(含算法)
- C++中关于打印一些字符图形的循环代码
- c和c++的一些训练题(12)(继承问题)(子随父姓)
- c++训练题(求某个数的最大质数因子)兼自己写的一个打印一定范围内质数方法
- c和c++的一些训练题(6)(杨辉三角)
- c和c++的一些训练题(14)(公司工资管理系统)(多态)
- 打印螺旋方阵
- c和c++的一些训练题(13)(掷双骰)
- 黑马程序员——用二维数组打印螺旋方阵和螺旋矩阵
- c和c++的一些训练题5(汉诺塔)
- Spiral Matrix II:螺旋打印方阵
- c和c++的一些训练题(9)(学生成绩管理系统)
- 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
- Spiral Matrix II:螺旋打印方阵
- c和c++的一些训练题(2)(复制类)
- 打印输出下列5×5螺旋方阵
- 数字螺旋方阵C++实现
- C/C++面试之算法系列--打印 N*N 螺旋矩阵