[蓝桥杯]蛇行矩阵

蛇行矩阵

时间限制: 1Sec 内存限制: 64MB 提交: 2830 解决: 1749

题目描述
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
输入
本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
输出
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
样例输入
5

样例输出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11

解题思路

回形取数有点像
把过程模拟出来就很简单了
输出的格式也需要注意一下
题不难,花了半个小时一次AC,,我给小白丢脸了,。。。。

完整代码

#include<iostream>
#include<math.h>
using namespace std;

int main()
{
    int N;
	cin>>N;
	int temp=0;
	int x=0,y,ans=0;
	int num=2;//很重要
	int nn[100][100];
	nn[0][0]=1;
	while(temp+1!=((N*N+N)/2) && x==0)
	{
		y=0;
		x++;
		ans+=x;
		x=ans;
		temp++;
		nn[x][y] = num++;
		while(x!=0)
		{
			x--;
			y++;
			temp++;
			nn[x][y] = num++;
		}
	}
	for(int i =0;i<N;i++)
	{
		for(int j=0;j<N-i;j++)
		{
			j==N-i-1 ? cout<<nn[i][j] :cout<<nn[i][j]<<" ";
		}
		i==N-1 ? cout<<"": cout<<endl;
	}
    return 0;
}

猜你喜欢

转载自blog.csdn.net/DanBo_C/article/details/88380535