码迷,mamicode.com
首页 > 其他好文 > 详细

ACM_蛇形矩阵

时间:2018-05-12 14:23:25      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:while   开始   memset   ++   out   tle   inpu   cal   解题思路   

蛇行矩阵

Time Limit: 4000/2000ms (Java/Others)

Problem Description:

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

Input:

本题有多组数据,每组数据由一个正整数N组成。(N不大于100)

Output:

对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。

Sample Input:

5

Sample Output:

1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
解题思路:找规律题,先打表,再直接输出。
举个栗子:当n=3时,矩阵坐标如下:
(0,0),(0,1),(0,2)
(1,0),(1,1)
(2,0)
通过上面的举例,我们可以发现,同一颜色从左往右看,横坐标是降序,纵坐标是升序,结合样例可知,给其一个计数器,从行开始,依次遍历,公式为snake[i-j][j]=num++,水过。
AC代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,num=1,snake[101][101];
 6     memset(snake,0,sizeof(snake));
 7     for(int i=0;i<101;++i)
 8         for(int j=0;j<=i;++j)
 9             snake[i-j][j]=num++;
10     while(cin>>n){
11         for(int i=0;i<n;++i){
12             for(int j=0;j<n-i;++j){
13                 cout<<snake[i][j];
14                 if(j!=n-i-1)cout<< ;
15                 else cout<<endl;
16             }
17         }
18     }
19     return 0;
20 }

 

ACM_蛇形矩阵

标签:while   开始   memset   ++   out   tle   inpu   cal   解题思路   

原文地址:https://www.cnblogs.com/acgoto/p/9028500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!