51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 856|回复: 9
打印 上一主题 下一主题

怎样求这样一个矩阵?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-7-16 21:06:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假如有一个nxm 的矩阵,其值分布如下, 哪位能用C or C++ 求出呀, 谢谢帮忙啦.
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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-7-16 21:15:53 | 只看该作者
写一下思路
定义4个m = 4,m=0,i=0,j=0作如下循环
while(j<m) j++;
while(i<m) i++;
while(j>n) j--;
whlie(i>n) i--;
k--;
n++;

[ 本帖最后由 Jor 于 2007-7-16 21:18 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-7-16 21:23:34 | 只看该作者
Actaully , i can't get you, could  you explain clearly, maybe my brain doesn't work smartly now. thank you .
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-7-16 21:31:00 | 只看该作者
int a[4][4];
int m = 4,m=0,i=0,j=0,b=1;

while(m!=n) {
while(j<m) {a [ i] [j]=b;j++;b++;}
while(i<m) {a [ i] [j]=b;i++;b++;}
while(j>n) {a [ i] [j]=b;j--;b++;}
whlie(i>n) {a [ i] [j]=b;i--;b++}
m--;
n++;
}

[ 本帖最后由 Jor 于 2007-7-16 21:33 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-7-16 22:08:38 | 只看该作者
complete code for c++:
#include <iostream.h>

int main(int argc,char* argv[])
{
        int a[5][5];
        int m_b,n_b,m_t,n_t,i,j,v;
        v=1;i=0;j=0;
        m_b=0;n_b=0;
        m_t=4;n_t=4;
        while((m_b<=m_t) && (n_b<=n_t))
        {
                while(j<=m_t) {a[j]=v; v++; j++;}
                j--;v--;
                while(i<=n_t) {a[j]=v; v++; i++;}
                i--;v--;
                while(j>=m_b) {a[j]=v; v++; j--;}
                j++;v--;
                while(i>=m_b+1) {a[j]=v; v++; i--;}
                i++;v--;
                m_b++;m_t--;n_b++;n_t--;
        }
       
        for(i=0;i<=4;i++)
        {
                for(j=0;j<=4;j++)
                        cout<<a[j]<<" ";
                    cout<<endl;
        }
        return 0;
}
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-7-16 22:11:13 | 只看该作者
再改良成工整一点的:
#include <iostream.h>

int main(int argc,char* argv[])
{
        int a[5][5];
        int m_b,n_b,m_t,n_t,i,j,v;
        v=1;i=0;j=0;
        m_b=0;n_b=0;
        m_t=4;n_t=4;
        while((m_b<=m_t) && (n_b<=n_t))
        {
                while(j<=m_t) {a[j]=v; v++; j++;}
                j--;v--;
                while(i<=n_t) {a[j]=v; v++; i++;}
                i--;v--;
                while(j>=m_b) {a[j]=v; v++; j--;}
                j++;v--;
                while(i>=m_b+1) {a[j]=v; v++; i--;}
                i++;v--;
                m_b++;m_t--;n_b++;n_t--;
        }
       
        for(i=0;i<=4;i++)
        {
                for(j=0;j<=4;j++)
                        cout<<a[j]<<"\t";
                    cout<<endl;
        }
        return 0;
}
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-7-16 23:13:56 | 只看该作者
不好意思,上面那个算法在某些情况下会有点问题,而且这里的文本编辑有BUG,不能正常显示.我另外发一个帖子,把源代码贴出来.
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-7-16 23:26:50 | 只看该作者
瓦。。楼上的写的那么完整阿。。偶也来写个 顺便骗骗帖子~~~
#include "stdio.h"

void main() {
int a[5][5];
int m=4,n=0,b=1;
int s=0,t=0;
int i=0,j=0;

while((m>=2) && (n<=2)) {
                while(j<=m) {a[ i][j]=b;j++;b++;}
                i++;j--;
                while(i<=m) {a[ i][j]=b;i++;b++;}
                j--;i--;
                while(j>=n) {a[ i][j]=b;j--;b++;}
                i--;j++;
                n++;
                while(i>=n) {a[ i][j]=b;i--;b++;}
                m--;
                j++;i++;               
}
for(i=0;i<=4;i++)
        {
             for(j=0;j<=4;j++)
                 printf("%d ",a[ i][j]);
                 printf("\n");
        }

}
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-7-17 23:27:11 | 只看该作者
#include <stdio.h>
main()
{
int array[5][5],t=0,m=0,r=0,c=0,s1=1,s2=4,s3=0,s4=4,i=1;
  while(s1!=4)
      {
        while(m<=s4)
        {
          array[t][m]=i;
          m++;
          i++;
        }
        s4--;
        m--;
        i--;
        while(t<=s2)
        {
           array[t][m]=i;
           t++;
           i++;
        }
        s2--;
        t--;
        i--;
        while(m>=s3)
        {
           array[t][m]=i;
           m--;
           i++;
        }
        s3++;
        m++;
        while(t>s1)
        {
           t--;
           array[t][m]=i;
           i++;
        }
        t=s1;
        m=s1;
        s1++;
      }
        for(r=0;r<5;r++)
        {

           for(c=0;c<5;c++)
           printf("%3d",array[r][c]);
           printf("\n");
        }
}
sdlkfj1
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-7-19 22:42:10 | 只看该作者
收到, 谢谢个位的回复
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-11 00:39 , Processed in 0.069838 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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