应天论坛

 找回密码
 参与我们

QQ登录

只需一步,快速开始

搜索
查看: 604|回复: 0

蛇形矩阵算法

[复制链接]

276

主题

303

帖子

3197

积分

管理员

湘南小侠客

Rank: 9Rank: 9Rank: 9

积分
3197

优质服务勋章论坛元老

QQ
发表于 2019-8-4 10:03:14 | 显示全部楼层 |阅读模式
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


我的一个傻瓜算法,嘿嘿:VC2008编译通过。
假设输入为5
则设置数组中各个元素为
1
2     3
4     5   6
7     8   9  10
11  12 13 14 15

那么只要将从第二列开始的每一列都移到顶端就行了
结果是
1   3   6  10  15
2   5   9  14
4   8  13
7  12
11


  1. #include "stdio.h"
  2. #define MAX 100
  3. void main()
  4. {
  5.         int n;
  6.         int t[MAX][MAX];
  7.         int a,b;
  8.         int c,e;
  9.         int value;

  10.         while (scanf("%d",&n) != EOF)
  11.         {
  12.                 //初始化矩阵,元素为0
  13.                 for (a=0;a<MAX;a++)
  14.                 {
  15.                         for (b=0;b<MAX;b++)
  16.                                 t[a][b]=0;
  17.                 }
  18.                 value = 0;
  19.                 for (a=0;a<n;a++)
  20.                 {
  21.                         for (b=0;b<=a;b++)                                       
  22.                         {                       
  23.                                 t[a][b] = ++value;                     
  24.                         }
  25.                 }

  26.                 //开始移动每一列数据
  27.                 for (c=0;c<n;c++)//移动第c列的数据
  28.                 {
  29.                         if (t[0][c] == 0)
  30.                         {
  31.                                 b=c;
  32.                                 for (e=1;e<=n-c;b++,e++)
  33.                                 {
  34.                                         t[b - c][c] = t[b][c];
  35.                                         t[b][c] = 0;
  36.                                 }
  37.                         }
  38.                 }//for

  39.                 for (a=0;a<n;a++)
  40.                 {
  41.                         for (b=0;b<n;b++)
  42.                         {
  43.                                 if (t[a][b] != 0)//输出不为0的元素
  44.                                         printf("%d ",t[a][b]);
  45.                         }
  46.                         printf("\n");
  47.                 }//for
  48.         }//while
  49. }
复制代码
每次见你穿短裤打领带,还穿个拖鞋,下次再这样穿不要从我家门口过了!
http://gsh.yzqz.cn/CassettePlayer/index.html

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 参与我们

本版积分规则

QQ|Archiver|手机版|小黑屋|应天社区 ( 湘ICP备17015224号 )

GMT+8, 2024-12-22 13:48 , Processed in 0.078125 second(s), 28 queries .

Powered by Discuz!

© 2001-2017 Comsenz Inc.


免责声明:
本站所发布的第三方软件及资源(包括但不仅限于文字/图片/音频/视频等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢某程序或某个资源,请支持正版软件及版权方利益,注册或购买,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: admin@yzqz.cn

快速回复 返回顶部 返回列表