作者在 2013-10-19 19:57:09 发布以下内容
Problem Description
Input
输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组数据由一个正整数N组成。(N不大于100)
Output
对于每一组数据,输出一个N行的蛇形矩阵。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
Sample Input
2 3 5Sample Output
1 3 6 2 5 4 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11
#include<iostream> using namespace std; int main() { int t;cin>>t; for(int i=0;i<t;i++) { int a[100][100],k; cin>>k; int i,j,v=1; for(i=0;i<k;i++) { for(j=0;j<=i;j++) { a[i-j][j]=v++; } } for(i=0;i<k;i++) { for(j=0;i+j<k;j++) { if(j>0) cout<<" "; (1) cout<<a[i][j]; } cout<<endl;
(1)出我是这么考虑的,我把控制空格输出时,空格是在数字之前输出的,,所以,我只需想方设法去掉最前面的空格就算是完成输出了。而(1)出的目的就是把开始的空格去掉,当然还有一种方法就是空格输出时,最后面多一个空格,我们可以用相同的思想来设置输出的控制,
for(i=0;i<k;i++) { for(j=0;i+j<k;j++) { cout<<a[i][j]; if(j!=k-i-1) cout<<" "; } cout<<endl; 这就是当空格是最后有多余时的输出。