| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 638 人关注过本帖
标题:上次看到有人发螺旋矩阵 (奇偶通用)
只看楼主 加入收藏
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:6 
上次看到有人发螺旋矩阵 (奇偶通用)
自己写了个没有动态空间的 请问怎么弄成动态的  我想过用2维指针 但是遇到未初始大小无法定义的问题 下面代码有节省空间的余地吗
#include <stdio.h>
#include <malloc.h>
char a[100][100];      //这里就是我想改进的地方   想弄成动态的  给个思路  老是碰到大小未确定而无法定义的问题  
void main()             // 而2维指针的动态大小如何用malloc来建立  而且如何设2维指针? *p[]无法通过
 {
 void fuzhi(int);
 int n;
  printf ("输入正方矩阵的边长:");
      scanf ("%d",&n);
  printf ("输出螺旋矩阵:\n");
 fuzhi(n);
 for (int i=1;i<=n;i++)
  for (int j=1;j<=n;j++)
  { printf ("%d ",a[i][j]);
  if(j==n) printf ("\n");
  }  
}
void fuzhi (int n)
{
 for (int i=1; i <= n; i++)
  for (int j=1; j <= n; j++)
    {
  if (i == 1 || j ==1 || i == n || j== n )      //先把所有的边都负值为1
   a[i][j] = 1;   
  else
        {
    if((i <= n/2)&&(j <= n/2))         //为左上角的块负值
     i<=j ? a[i][j]= i : a[i][j]=j ;
    else if((i >= n/2)&&(j <= n/2))    //为左下角的块负值
     (n-i+1) <=j ? a[i][j]= n-i+1 : a[i][j]=j ;
                 
    else if((i <= n/2)&&(j >= n/2))    //为右上角的块负值
    (n-j+1) <=i ? a[i][j]= n-j+1 : a[i][j]=i ;
    else if((i >= n/2)&&(j >= n/2))    //为右下角的块负值
     (n-i+1) <=(n-j+1) ? a[i][j]= n-i+1 : a[i][j]= n-j+1 ;
         }
    }
  }



[ 本帖最后由 cqm9266 于 2012-3-9 21:22 编辑 ]
搜索更多相关主题的帖子: 矩阵 螺旋 无法定义 include 动态 
2012-03-09 21:12
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
主要是把矩阵分成4块 分别是 左上角 右下角 左下角 右上角  这样就不需要讨论奇偶的情况了。沙发!~

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2012-03-09 21:13
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:10 
回复 2楼 cqm9266
什么是螺旋矩阵 ?

我就是真命天子,顺我者生,逆我者死!
2012-03-09 22:14
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
回复 3楼 BlueGuy
1 1 1 1
1 2 2 1
1 2 2 1
1 1 1 1类似这种的

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2012-03-10 15:42
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:10 
呵呵  完全可以不用开空间  再去看看那个帖子吧

                                         
===========深入<----------------->浅出============
2012-03-10 16:57
dingzheheng
Rank: 2
等 级:论坛游民
帖 子:18
专家分:50
注 册:2011-4-13
收藏
得分:10 
回复 楼主 cqm9266
采用一维数组动态建立矩阵,首先建立一个int指针,动态分配内存,然后通过指定断行指针
如建立 1,3,4
       2,3,6
       3,4,7
的矩阵,可以动态分配一个长为9的指针,然后再用一个int**指针指向每一行的开头.
#include<stdio.h>

#define COL 4
#define ROW 4

int main(int argc,char* argv[])
{
    int* data;
    int* tp[ROW];
  

   data=malloc();
   tp[0]=data
   tp[1]=data+COL;
2012-03-10 17:00
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
回复 4楼 cqm9266
好 的 我对指针的理解程度不够透彻 谢谢了

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2012-03-10 21:36
快速回复:上次看到有人发螺旋矩阵 (奇偶通用)
数据加载中...
 
   



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

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