| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 616 人关注过本帖, 3 人收藏
标题:请高手看看这些数的规律,用程序怎样写
只看楼主 加入收藏
anzi520
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-9-24
结帖率:100%
收藏(3)
已结贴  问题点数:30 回复次数:6 
请高手看看这些数的规律,用程序怎样写
1  2  6  7  15
3  5  8 14  16
4  9  13 17 22
10 12 18 21 23
11 19 20 24 25
搜索更多相关主题的帖子: 规律 
2009-10-27 20:39
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:4 
看45度的斜线···接着去的···自己写看行不行···
2009-10-27 21:20
anzi520
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-9-24
收藏
得分:0 
我也看出来了就是不知道怎么用程序写
2009-10-27 21:24
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:4 
一点思路:以斜的角度去看每一行,奇数行坐标向斜右上移动,偶数行坐标向斜左下移动。
·
输入:n  
显示:n*n矩阵
程序代码:
#include <stdio.h> 
int main(void) 
{ 
 int i,j,k,n,m,a[50][50]; 
 printf("n="); 
 scanf("%d",&n); 
 for(k=1,m=i=j=0;k<=n*n;k++) 
   { 
    a[i][j]=k; 
    if(m%2==0) /* 第一行m=0,m能整除2是奇数行 */
      { 
       if(j+1!=n) 
         if(i==0)j++,m++; 
         else j++,i--; 
       else i++,m++; 
      } 
    else    /* 否则偶数行 */
      { 
       if(i+1!=n) 
         { 
          if(j==0)i++,m++; 
          else i++,j--; 
         } 
       else j++,m++; 
      } 
   } 
 
 for(i=0;i<n;i++) 
   { 
    for(j=0;j<n;j++) 
      printf("%3d",a[i][j]); 
    printf("\n\n"); 
   } 
 printf("\n\n"); 
 return 0; 
}


[ 本帖最后由 UserYuH 于 2009-10-27 23:36 编辑 ]

努力—前进—变老—退休—入土
2009-10-27 23:31
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:4 
我说说我发现的规律
1  2  6  7  15
3  5  8 14  16
4  9  13 17 22
10 12 18 21 23
11 19 20 24 25
        00    01    02    03    04
        10    11    12    13    14
        20    21    22    23    24
        30    31    32    33    34
        40    41    42    43    44
第一斜行下标和为0,第二斜行1,依次类推到8;
先左下标不变,右下标递增,当右下标超过了斜行数n,转为右下标不变,左下标递增;当左下标大于斜行数n,再转为左下标不变,右下标增加。
这样就可以对数组[5][5]对应的赋值,直接5行5行输出就能得到所要的结果
我得睡觉了,明天来写算法看能不能实现

我可好玩啦...不信你玩玩^_^
2009-10-27 23:46
ljt0000mf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:157
注 册:2009-7-4
收藏
得分:4 
以下是引用pgy在2009-10-27 23:46:37的发言:

我说说我发现的规律
1  2  6  7  15
3  5  8 14  16
4  9  13 17 22
10 12 18 21 23
11 19 20 24 25
        00    01    02    03    04
        10    11    12    13    14
        20    21    22    23  ...
姐姐,你睡醒了,就别写了,你的思路不太可靠;
还是解释下楼上的算法吧。
我还是看不明白 ;

我说4楼的,能解释下不?
2009-10-28 01:53
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:4 
程序代码:
蛇形矩阵&shy;

1     2     3      4
12  13   14    5
11  16   15    6
10   9      8     7

 

#include <stdio.h>&shy;

&shy;

int main()&shy;

{&shy;

    int n;                                &shy;

       int dx[4] = {-1,0,1,0}, dy[4] = {0,1,0,-1};  //  北0 东1 南2 西3  // 相当一个循环队列&shy;

    int dx1[4] = {0,1,0,1}, dy1[4] = {1,0,-1,0}; //  东南西南&shy;

    while(scanf("%d", &n) != EOF) &shy;

    {&shy;

        int map[32][32] = {0};                &shy;

        int x, y, d, nStep = 2;&shy;

                                              &shy;

        for(x = 0, y = n + 1; x < n+2; x++)  &shy;

            map[x][0] = map[x][y] = -1;&shy;

        for(x = 0, y = n + 1; x < n+2; x++)   &shy;

            map[0][x] = map[y][x] = -1;&shy;

&shy;

        x = y = 1;                         &shy;

        d = 1;          &shy;

        &shy;

        for(map[1][1] = 1; nStep < 4*n-3; nStep++)           &shy;

        {&shy;

            x += dx[d]; y += dy[d];&shy;

            map[x][y] = nStep;&shy;

            if (map[x+dx[d]][y+dy[d]])         &shy;

                   d = (d+1) % 4;  &shy;

        }        &shy;

        &shy;

        d = 0;&shy;

        for(; nStep < n*n+1; nStep++)           &shy;

        {&shy;

            x += dx1[d]; y += dy1[d];&shy;

            map[x][y] = nStep;&shy;

            if (map[x+dx1[d]][y+dy1[d]] || d == 1 || d == 3)         &shy;

                d = (d+1) % 4; &shy;

                    &shy;

        }    &shy;

        printf("\n");&shy;

        for(x = 1; x < n+1; x++)               &shy;

        {&shy;

            for(y = 1; y < n+1; y++)&shy;

                printf("%4d",map[x][y]);&shy;

            printf("\n");&shy;

        }&shy;

        printf("\n");&shy;

    }&shy;

    return 0;&shy;

}&shy;


看了以后, 相信你什么样式的矩阵都会写

[ 本帖最后由 BlueGuy 于 2009-10-28 08:18 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2009-10-28 08:16
快速回复:请高手看看这些数的规律,用程序怎样写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054782 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved