刹那芳华 发表于 2011-12-9 19:18:08

蛇形矩阵

蛇行矩阵
Problem
蛇形矩阵是由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

刹那芳华 发表于 2011-12-9 21:15:02

本帖最后由 刹那芳华 于 2011-12-9 21:20 编辑

没人么?我自己先来个吧~~
#include<iostream>
using namespace std;

int main()
{
    floatn , m , count ;
    int s;
    cout<<"请输入一个数字:"<<endl;
    cin>>count;
      while(cin)
      {
    for(n=1,s=1;n<=count;n++,s++)
    {   
      cout<<endl;
      for (m=1;m<=count-n+1;m++)                        
            cout<<0.5*(m+n)*(m+n)-n*3/2-m/2+1<<" ";
    }
      cout<<"输入另一个数字(输入Q退出):";
      cin>>count;
      }
    return 0;
}

z____ 发表于 2011-12-10 14:18:37

发个delphi的控制台程序

z____ 发表于 2011-12-10 14:18:57

program Project1;

{$APPTYPE CONSOLE}

var
i,j,k,n,a,b,c,temp:integer;

begin
writeln('输入一个整数:');
readln(n);

a:=1;
b:=2;
c:=1;
for i:=n downto 1 do
begin
k:=a;
temp:=b;
for j:=i downto 1 do
    begin
      write(k:6);
      k:=k+temp;
      inc(temp);
    end;
writeln;
a:=a+c;
inc(b);
inc(c);
end;
readln;

end.

z____ 发表于 2011-12-10 14:30:38

为了便于大多数人理解,转换成C的

z____ 发表于 2011-12-10 14:31:14

int _tmain(int argc, _TCHAR* argv[])
{
        int i,j,k,n,a,b,c,temp;

        printf("please input an integer:\n");
        scanf("%d",&n);

        a=1;
        b=2;
        c=1;

        for(i=n;i>0;i--)
        {
                k=a;
                temp=b;
                for(j=i;j>0;j--)
                {
                        printf("%6d",k);
                        k+=temp;
                        temp++;
                }
                printf("\n");
                a+=c;
                b++;
                c++;
        }
        getch();
        return 0;
}

cqy55555 发表于 2011-12-10 19:03:25

额也来一个#include<stdio.h>
void main()
{
        int i,j,k=0,m=0,n;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
               
                for(j=1;j<=n-i;j++)
                {
                        k+=j+i;
                        printf("%d ",k);
                }
                m+=i;
                k=m;
                printf("\n");
        }

}

刹那芳华 发表于 2011-12-12 12:17:45

cqy55555 发表于 2011-12-10 19:03 static/image/common/back.gif
额也来一个

若不是按行输出的,是按个数输出的又改怎么写呢?

刹那芳华 发表于 2011-12-12 12:18:04

z____ 发表于 2011-12-10 14:31 static/image/common/back.gif
int _tmain(int argc, _TCHAR* argv[])
{
        int i,j,k,n,a,b,c,temp;


若不是按行输出的,是按个数输出的又改怎么写呢?

z____ 发表于 2011-12-12 22:34:59

什么意思?就是输入5的话就只输出5个数吗?

刹那芳华 发表于 2011-12-13 11:51:39

z____ 发表于 2011-12-12 22:34 static/image/common/back.gif
什么意思?就是输入5的话就只输出5个数吗?

恩,就是这个意思

猎鹰三国 发表于 2012-1-26 22:21:21

#include <stdio.h>

void main()
{
int n;
int i,j;
puts("please enter n:");
scanf("%d",&n);
for( i=0;i<=n-1;i++)
{
static int rowHead = 1,up =0,num;
rowHead += i;
printf("%d\t",rowHead);
for(j=1,num = rowHead;j<n-i;j++)
{
   num += j+1+up;
   printf("%d\t",num);
}
printf("\n");
up++;
}

return 0;
}

linha0 发表于 2012-1-31 16:52:19



题目是以第二种蛇形序列输出的。如果以第一种蛇形序列输出呢?(个人认为第一种才算是真蛇形)

linha0 发表于 2012-1-31 17:05:07

如果再将题目改成输出(10 X 10或5 X 10)之类的矩阵,
又如何使算法变得可以在最大尺度上的重用,或最小尺度上的修改呢?
:lol:lol:lol:lol:lol

linha0 发表于 2012-1-31 17:21:09

再假设:
如果想输出正三角形呢?(当前题目是倒三角)

又或者,想以:
1
2 3
6 5 4
7 8 9 10
这种蛇形三角输出呢?

linha0 发表于 2012-1-31 17:34:21

其实我真正想说的是算法的维护和扩展这两个特点。

驻留的习惯 发表于 2014-3-15 19:45:16

z____ 发表于 2011-12-10 14:18 static/image/common/back.gif
program Project1;

{$APPTYPE CONSOLE}


{:7_148:}!!!!

zndownload 发表于 2017-1-2 16:29:07

这个是线性代数里的么
页: [1]
查看完整版本: 蛇形矩阵