文章目录
一、题caioj1030
1030: [视频]打印矩阵2(蛇形矩阵)
时间限制: 1 Sec 内存限制: 128 MB
提交: 2310 解决: 1453
[提交] [状态] [讨论版] [命题人:admin]
题目描述
学习目标:300秒内 一气呵成 打完代码,并且运行正确,并且提交正确。
【题意】
如下图是规模为4的蛇形矩阵:
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
求规模为n(n<=20)(注意:每个元素需要4个空格位, 这样的:printf("%4d",a[i][j]); )
【输入格式】
输入一个整数n
【输出格式】
输出n*n大小的蛇形矩阵
【输入样例】
4
【输出样例】
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
二、代码
#include<vector>
#include<iostream>
using namespace std;
int a[100][100];
int n;
int main()
{
scanf("%d",&n);
int num=1;
int floor=0;
for(int i=1;i<=(2*n-1);i++)
{
if(i<=n) floor++;
else floor--;
vector<int> c;
for(int k=0;k<floor;k++)
{
c.push_back(num);
num++;
}
if(i%2==0)
{
int ci=0;
for(int index=0;index<i;index++)
{
if(index>=n || i-1-index>=n) continue;
a[index][i-1-index]=c[ci];
ci++;
}
}
else
{
int ci=floor-1;
for(int index=0;index<i;index++)
{
if(index>=n || i-1-index>=n) continue;
a[index][i-1-index]=c[ci];
ci--;
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
cout<<endl;
}
return 0;
}