输出螺旋矩阵
2014-12-05 22:13
246 查看
第一次写博客,不知道怎么写。所以我就写一个我做过的一个小算法题目。
#include<stdio.h>
#define M 100
#define N 100
int a[M]
;
void limit(int array[M]
,int m,int n,int k1,int c,int f,int num);
int main()
{int m,n,k1=0,c,f,num=1;
printf("please enter m and n\n");scanf("%d,%d",&m,&n);
c=m>n?n:m;
c=c/2;//确定能够完整的打印圈数
f=m>n?0:1;//确定是行长还是列长标志
limit(a,m,n,k1,c,f,num);
printf("the array is:\n");
for(int i=0;i<m;i++)
{for(int j=0;j<n;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
return 0;
}
void limit(int array[M]
,int m,int n,int k1,int c,int f,int num)//M,N表示最大打印范围,m,n表示打印的 实际范围,
{
if(k1<c)//k1表示当前打印圈数,c表示 可以打印的整圈数 ;num是实际打印数
{for(int k=k1;k<=n-1-k1;k++)
array[k1][k]=num++;
for(int k=k1+1;k<=m-1-k1;k++)
array[k][n-1-k1]=num++;
for(int k=n-k1-2;k>=k1;k--)
array[m-1-k1][k]=num++;
for(int k=m-2-k1;k>=k1+1;k--)
array[k][k1]=num++;
k1++;
limit(a,m,n,k1,c,f,num);
}
else if((m%2!=0)||(n%2!=0))//对于行列都是偶数,则不可以进行下列操作,否则发生覆盖
{for(int k=k1;k<=n-1-k1;k++)
array[k1][k]=num++;
if(f==0)////f为标志,若f为0则表示行数大于列数;需要进行纵向打印最后一列;
for(int k=k1+1;k<=m-1-k1;k++)
array[k][n-k1-1]=num++;
}
}
#include<stdio.h>
#define M 100
#define N 100
int a[M]
;
void limit(int array[M]
,int m,int n,int k1,int c,int f,int num);
int main()
{int m,n,k1=0,c,f,num=1;
printf("please enter m and n\n");scanf("%d,%d",&m,&n);
c=m>n?n:m;
c=c/2;//确定能够完整的打印圈数
f=m>n?0:1;//确定是行长还是列长标志
limit(a,m,n,k1,c,f,num);
printf("the array is:\n");
for(int i=0;i<m;i++)
{for(int j=0;j<n;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
return 0;
}
void limit(int array[M]
,int m,int n,int k1,int c,int f,int num)//M,N表示最大打印范围,m,n表示打印的 实际范围,
{
if(k1<c)//k1表示当前打印圈数,c表示 可以打印的整圈数 ;num是实际打印数
{for(int k=k1;k<=n-1-k1;k++)
array[k1][k]=num++;
for(int k=k1+1;k<=m-1-k1;k++)
array[k][n-1-k1]=num++;
for(int k=n-k1-2;k>=k1;k--)
array[m-1-k1][k]=num++;
for(int k=m-2-k1;k>=k1+1;k--)
array[k][k1]=num++;
k1++;
limit(a,m,n,k1,c,f,num);
}
else if((m%2!=0)||(n%2!=0))//对于行列都是偶数,则不可以进行下列操作,否则发生覆盖
{for(int k=k1;k<=n-1-k1;k++)
array[k1][k]=num++;
if(f==0)////f为标志,若f为0则表示行数大于列数;需要进行纵向打印最后一列;
for(int k=k1+1;k<=m-1-k1;k++)
array[k][n-k1-1]=num++;
}
}
相关文章推荐
- (大神勿入)据说是一道面试题,然后自己就写了一发(矩阵的螺旋输出)
- 螺旋输出二维矩阵
- 矩阵螺旋输出
- 输出螺旋矩阵
- Leet Code 54 Spiral Matrix - 螺旋输出矩阵 - Java
- 矩阵螺旋输出
- JavaScript输出螺旋矩阵
- C++编程循环输出螺旋矩阵
- 顺时针螺旋输出矩阵中的1到n*n的数字
- N×N矩阵螺旋打印输出
- 矩阵螺旋输出打印原代码
- JavaScript定义及输出螺旋矩阵的方法详解
- 输出螺旋矩阵(二)
- 螺旋输出N*N矩阵
- 矩阵顺时针螺旋输出2种不同的方法。
- N×N矩阵螺旋打印输出
- 输出螺旋矩阵(二)
- [LeetCode] Spiral Matrix 螺旋输出矩阵
- 矩阵顺时针螺旋输出2种不同的方法。
- C语言输出螺旋矩阵