标题:如何输入一个数来确定2维数组的规格
取消只看楼主
mylzy159
Rank: 2
等 级:论坛游民
帖 子:61
专家分:23
注 册:2009-4-12
结帖率:100%
已结贴  问题点数:20 回复次数:4 
如何输入一个数来确定2维数组的规格
#include<iostream>
using namespace std;
int a[5][5];
void fun(int x,int y,int n,int sum)
{
    if(a[x][y]==0)
    {
        sum++;
        a[x][y]=sum;
        fun(x,y,n,sum);
    }
    if(a[x][y+1]==0&&y+1<n)
    {
        y++;
        sum++;
        a[x][y]=sum;
        fun(x,y,n,sum);
    }
    if(a[x+1][y]==0&&x+1<n)
    {
        x++;
        sum++;
        a[x][y]=sum;
        fun(x,y,n,sum);
    }
    if(a[x][y-1]==0&&y-1>=0)
    {
        y--;
        sum++;
        a[x][y]=sum;
        fun(x,y,n,sum);
    }
    if(a[x-1][y]==0)
    {
        while(a[x-1][y]==0)
        {
            x--;
            sum++;
            a[x][y]=sum;
        }
        fun(x,y,n,sum);
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            cout<<a[i][j]<<' ';
        cout<<endl;
    }
    exit(0);
}
void main()
{
    int n,x=0,y=0,sum=0;
    n=5;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            a[i][j]=0;
    fun(x,y,n,sum);
}
如何输入一个数来确定2维数组的规格..求教.这螺旋问题是要求输入一个数.我把他定成了5..
搜索更多相关主题的帖子: 规格 输入 
2010-04-26 17:18
mylzy159
Rank: 2
等 级:论坛游民
帖 子:61
专家分:23
注 册:2009-4-12
得分:0 
回复 2楼 南国利剑
就是输入一个数N...让2维数组变成a[N][N]的规格..动态数组?..要用vector?
2010-04-27 09:05
mylzy159
Rank: 2
等 级:论坛游民
帖 子:61
专家分:23
注 册:2009-4-12
得分:0 
回复 4楼 shiyuehai
我知道..我把题目贴出来吧/. 看你们怎么做的.
  输入一个数N..输出一个螺旋型的矩阵..
 例如输入5  .     输出

                                    1 2 3 4 5
                                    16 17 18 19 6
                                    15 24 25 20 7
                                    14 23 22 21 8
                                    13 12 11 10 9
2010-04-27 16:47
mylzy159
Rank: 2
等 级:论坛游民
帖 子:61
专家分:23
注 册:2009-4-12
得分:0 
回复 7楼 南国利剑
  嗯..第2个跟我的有点类似..其实我不想定义全局2维数组的..我想把2维数组传到fun()里面.但是我不会.. 就说第2个是用的动态数组.要是我用.怎么传到我的fun函数里面啊.?
 
2010-04-27 19:56
mylzy159
Rank: 2
等 级:论坛游民
帖 子:61
专家分:23
注 册:2009-4-12
得分:0 
#include<iostream>
using namespace std;
void fun(int **a,int x,int y,int n,int sum)
{
    if(a[x][y]==0)
    {
        sum++;
        a[x][y]=sum;
        fun(a,x,y,n,sum);
    }
    if(a[x][y+1]==0&&y+1<n)
    {
        y++;
        sum++;
        a[x][y]=sum;
        fun(a,x,y,n,sum);
    }
    if(x+1<n)
    {
        if(a[x+1][y]==0)
        {
            x++;
            sum++;
            a[x][y]=sum;
            fun(a,x,y,n,sum);
        }
    }
    if(a[x][y-1]==0&&y-1>=0)
    {
        y--;
        sum++;
        a[x][y]=sum;
        fun(a,x,y,n,sum);
    }
    if(a[x-1][y]==0)
    {
        while(a[x-1][y]==0)
        {
            x--;
            sum++;
            a[x][y]=sum;
        }
        fun(a,x,y,n,sum);
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            cout<<a[i][j]<<' ';
        cout<<endl;
    }
    exit(0);
}
void main()
{
    int n,x=0,y=0,sum=0;
    cin>>n;
    int **a=new int*[n];
    for(int i=0;i<n;i++)
        a[i]=new int[n];
    for(i=0;i<n;i++)
        for(int j=0;j<n;j++)
            a[i][j]=0;
    fun(a,x,y,n,sum);
}我自己改好了..谢谢你.
2010-04-28 17:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-304468-1-1.html




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

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