从1到n的平方,按照从小到大,顺时针打印
来源:互联网 发布:淘宝客软件下载 编辑:程序博客网 时间:2024/06/09 23:05
首先看个例子,就是n=3的时候, 1 2 3
8 9 4
7 6 5
然后是n=4的时候, 1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
分析此题的时候首先要看到,当n=3,4的时候我们看到这些数字围成的正方形层数都是2,大家可以分析一下,当n%2==0的时候正方形的层数是n/2,当n%2==1的时候正方形的层数为n/2+1。而且还可以得知,当层数为偶数的时候,最里层的正方形有4个数字,奇数的时候有1个数字,以上是对层数和点数的分析。
那下面首先把程序贴上来,然后在分析。根据上面的分析可以得知层数level然后设定循环。看n=4,的时候,有两层,先扫描第一层,把上侧前n-level-1个数字当做上侧的数字,比如 1,2,3,4,只取1,2,3保留4,把4,5,6当做右侧的一组数据,7,8,9当做下侧的数据,
10,11,12,当做左侧的数据,大家看,现在把第一层的数据分成了三组,那第二层的13,14,1,5,16分别是上侧,右侧,下侧和左侧的数据,分析到这就好办了。因为每层的数字都是按照顺时针方向递增的,而且右侧的第一个数据是上侧最后一个数据的加1,所以要保留每侧数据的最后一个值。 左侧数据的递归式是,行不变,列变,则有:i=level-1;i<n-level;i++; a[level-1][i]=k3+count;count++;之后大家分析我的程序吧。这应该是个数学问题。(分析的比较潦草,但是程序还是挺健壮的,大家多指点)。
#include <stdio.h> #include<stdlib.h> void main() {int n;int i,j;int k,k1,k2,k3;int level;int count;while(true){k3=0;scanf("%d",&n);int **a=(int**)malloc(sizeof(int)*n);for(i=0;i<n;i++)a[i]=(int*)malloc(sizeof(int)*n);for(i=0;i<n;i++)for(j=0;j<n;j++) {a[i][j]=0;}for(level=1;level<=n/2;level++) {count=0;for(i=level-1;i<n-level;i++) { count++;a[level-1][i]=k3+count; //扫描每层的上层的数字}k=a[level-1][i-1];count=0;for(i=level-1;i<n-level;i++) {//扫描每层的右侧的数字count++;a[i][n-level]=k+count;}k1=a[i-1][n-level];count=0;for(i=n-level;i>=level;i--) {//扫描每层的底侧的数字count++;a[n-level][i]=k1+count;}k2=a[n-level][i+1]; count=0;for(i=n-level;i>=level;i--) {//扫描每层的左侧数字count++;a[i][level-1]=k2+count;}k3=a[i+1][level-1];}if(n%2==1) a[n/2][n/2]=k3+1;for(i=0;i<n;i++)for(j=0;j<n;j++){printf("%d\t",a[i][j]);if(j==n-1)printf("\n");}}}
- 从1到n的平方,按照从小到大,顺时针打印
- 将从1到n*n的n的平方个数,按顺时针方向从小到大排列成阵列
- 按照顺时针的顺序从外向里打印整形数组
- 1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵(递归)
- 1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵(递归)
- 打印从1到n的数
- 打印从1到N的数
- 打印从1到n的整数
- 1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵(动态2维数组)
- 输入一个矩阵,按照从外到里以顺时针的顺序依次打印每一个数字
- 输入一个矩阵,按照从外向里顺时针的顺序依次打印出每一个数字
- 1的平方加到n的平方
- 6.4输出从1到n的所有数的平方与立方
- 面试题12:输入数字n,按照顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999
- 打印从1到最大的n位数
- 打印从1到最大的n位数
- 打印从1到最大的n位数
- 从打印1到最大的n位数
- 给定先序:ABCDEFGHIJK 给定中序:CBEDGFAHJIK 首先分析上述给定的先,中序,首先得知先序遍历的肯定是二叉树的根节点:A,在看中序遍历,根据中序遍历的原理可知,在A左边的一定全部属于
- cocos2d-x触摸事件优先级的探究与实践
- 基于注释的Spring Security实战指南
- 内存数据库内核开发工作日志(初稿)(一)
- 再谈typedef
- 从1到n的平方,按照从小到大,顺时针打印
- andorid 开发环境搭建
- spring mvc项目在STS工具里Run on Server时,控制context root的名称
- SQL Server 2012 SEQUENCE 对象
- dfs + 回溯 +剪枝
- richfaces3.3.3 final在页面获取要上传的文件大小
- Navigation Mesh Technical Guide
- 框架管理基础之内存映射
- sizeof问题