| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1338 人关注过本帖
标题:有点纠结,蛇形矩阵(二维数组),有点bug
只看楼主 加入收藏
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:25 
这个程序的代码还是有点绕,我还在看,不过我找出问题的所在了

源程序中给数组赋值的时候肯能会越界,需要对越界的情况作出处理:
程序代码:
#include <stdio.h>
#define N 6
int count=1;  //初值
int main(int argc,char **argv)
{
    int a[N][N]={0};
    int i,j;
    int n;
    a[0][0] = count++;   
   
    for(n=1;n<(2*N-2);n++)
    {
        if(n%2==0)//偶数
        {
            for(i=0,j=n;((j>=0) && (i<=n));i++,j--)
            {
                //加了这个条件,控制数组的越界
                if(i>=N || j>=N) continue;
                if (a[i][j] == 0 )
                {
               
                    a[i][j] = count++;
                }
            }
        }
       
        else //奇数
        {

            for(i=n,j=0;((i>=0) && (j<=n));i--,j++)
            {
                //加了这个条件,控制数组的越界
                if(i>=N || j>=N) continue;
                if (a[i][j] == 0 )
                {
                    a[i][j] = count++;
                }
            }   
        }
    }

    a[N-1][N-1] = count++;   
   
    for(i = 0;i < N;i++)//输出结果
    {
        for(j = 0;j < N;j++)
        {
            printf("%3d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

  1   3   4  10  11  21
  2   5   9  12  20  22
  6   8  13  19  23  30
  7  14  18  24  29  31
 15  17  25  28  32  35
 16  26  27  33  34  36
请按任意键继续. . .


这次对了吧,大兵?

Edsger Dijkstra:算法+数据结构=程序
2013-06-18 10:37
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
回复 11楼 雪狼MJ
呵呵,对了!!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-06-18 12:08
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:25 
程序代码:
#include <stdio.h>
#define N 8
int count=1;  //初值
int main(int argc,char **argv)
{
    int a[N][N]={0};
    int i,j;
    int n;
    a[0][0] = count++;   
   
    for(n=1;n<(2*N-1);n++)//把这里改成这个控制条件! 就不用最后再对a[N-1][N-1]另外赋值了 
    {
        if(n%2)//偶数
        {
            for(i=0,j=n;((j>=0) && (i<=n));i++,j--)
            {
                //加了这个条件,控制数组的越界
                if(i>=N || j>=N) continue;
                if (a[i][j] == 0 )
                    a[i][j] = count++;
            }
        }
        else //奇数
        {
            for(i=n,j=0;((i>=0) && (j<=n));i--,j++)
            {
                //加了这个条件,控制数组的越界
                if(i>=N || j>=N) continue;
                if (a[i][j] == 0 )
                    a[i][j] = count++;
            }   
        }
    }
   for(i = 0;i < N;i++)//输出结果
    {
        for(j = 0;j < N;j++)
            printf("%3d ",a[i][j]);
        printf("\n");
    }
    return 0;
}

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-06-18 12:35
weipeng1217
Rank: 5Rank: 5
等 级:职业侠客
帖 子:175
专家分:386
注 册:2012-1-12
收藏
得分:0 
回复 13楼 我叫沃恩
谢谢啦。。
还有更优的算法嘛。。

C坛友交流群 群号:161091913 ,欢迎经常在线的朋友加入,一起学习,一起进步。。
2013-06-18 21:58
weipeng1217
Rank: 5Rank: 5
等 级:职业侠客
帖 子:175
专家分:386
注 册:2012-1-12
收藏
得分:0 
回复 11楼 雪狼MJ
输出的有点小问题,初值可能没给对,不过问题不大,谢谢啦~

C坛友交流群 群号:161091913 ,欢迎经常在线的朋友加入,一起学习,一起进步。。
2013-06-18 22:03
dengluoy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:127
专家分:165
注 册:2013-2-5
收藏
得分:0 
...

一同学习, 一同进步
2013-06-18 22:59
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
#include <stdio.h>

#define N   5

int main()
{
    int x, y;
    int a = 1, b = N * N;
    int s[N][N], flag = 1;

    x = y = 0;
    while (a <= b)
    {
        s[x][y]         = a++;
        s[N-1-x][N-1-y] = b--;

        x -= flag, y += flag;

        if (x < 0 || y < 0)
        {
            flag = -flag;
            if (x < 0)    x = 0;
            if (y < 0)    y = 0;
        }    
    }

    for (x = 0;x < N;++x, puts(""))
    for (y = 0;y < N;++y)
    {
        printf("%3d", s[x][y]);
    }
    
    return 0;
}


[fly]存在即是合理[/fly]
2013-06-18 23:21
快速回复:有点纠结,蛇形矩阵(二维数组),有点bug
数据加载中...
 
   



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

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