蛇形矩阵填写二维数组
2016-04-13 11:11
330 查看
#include<stdio.h>
#include<iostream>
using namespace std;
static int num=0;
void write(int a[][100],int col,int row,int start)
{
int endx=col-1-start;
int endy=row-1-start;
for(int i=start;i<=endx;i++)
{
a[start][i]=num;
printf("%d ",num);
++num;
}
printf("\n");
if(endy>start)
{
for(int j=start+1;j<=endy;j++)
{
a[j][endx]=num;
printf("%d ",num);
++num;
}
printf("\n");
}
if(endx>start && endy>start)
{
for(int k=endy-1;k>=start;k--)
{
a[endy][k]=num;
printf("%d ",num);
++num;
}
printf("\n");
}
if(endx>start && endy-1>start)
{
for(int h=endy-1;h>start;h--)
{
a[h][start]=num;
printf("%d ",num);
++num;
}
printf("\n");
}
printf("\n\n\n");
}
void write_matrix(int a[][100],int col,int row)
{
int start=0;
if(a == NULL && col<0 && row<0)
{
return ;
}
while(col>start*2 && row>start*2)
{
write(a,col,row,start);
++start;
}
}
int main()
{
int a[100][100];
int m,n;
scanf("%d%d",&m,&n);
// int** a = new int* [m];
// a[0] = new int[m*n]; // 分配连续内存
write_matrix(a,m,n);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
#include<iostream>
using namespace std;
static int num=0;
void write(int a[][100],int col,int row,int start)
{
int endx=col-1-start;
int endy=row-1-start;
for(int i=start;i<=endx;i++)
{
a[start][i]=num;
printf("%d ",num);
++num;
}
printf("\n");
if(endy>start)
{
for(int j=start+1;j<=endy;j++)
{
a[j][endx]=num;
printf("%d ",num);
++num;
}
printf("\n");
}
if(endx>start && endy>start)
{
for(int k=endy-1;k>=start;k--)
{
a[endy][k]=num;
printf("%d ",num);
++num;
}
printf("\n");
}
if(endx>start && endy-1>start)
{
for(int h=endy-1;h>start;h--)
{
a[h][start]=num;
printf("%d ",num);
++num;
}
printf("\n");
}
printf("\n\n\n");
}
void write_matrix(int a[][100],int col,int row)
{
int start=0;
if(a == NULL && col<0 && row<0)
{
return ;
}
while(col>start*2 && row>start*2)
{
write(a,col,row,start);
++start;
}
}
int main()
{
int a[100][100];
int m,n;
scanf("%d%d",&m,&n);
// int** a = new int* [m];
// a[0] = new int[m*n]; // 分配连续内存
write_matrix(a,m,n);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
相关文章推荐
- 析构函数
- Oracle之BBED之(二)-----BBED更改数据块
- 轻松把玩HttpClient之封装HttpClient工具类(二),插件式配置HttpClient对象
- FFT模板
- 172.The SQL statements executed in a user session are as follows:
- 字符集和编码
- Hbase 伪分布安装及Hbase shell操作
- 没有显示器且IP未知的情况下登录树莓派
- unity3d插件Daikon Forge GUI 中文教程3-基础控件Button和Sprite的使用
- HTML5 Input 类型
- 推荐eclipse插件Properties Editor
- MySQL中数据类型的验证
- bzoj3231 [Sdoi2008]递归数列
- 去掉点击a链接带来的虚框
- Socket心跳包机制
- WEB
- 两种并发模型 的理解(个人理解)
- 服务器端判断request来自Ajax请求(异步)还是传统请求(同步)
- HDOJ(HDU) 1406 完数
- iOS 真机测试提示框处理