| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 367 人关注过本帖
标题:杨氏矩阵
只看楼主 加入收藏
紫罗兰丹丹
Rank: 2
等 级:论坛游民
威 望:1
帖 子:14
专家分:13
注 册:2014-3-28
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:2 
杨氏矩阵
碰到一个关于杨氏矩阵的题目,就是讲1~9排成3*3的杨氏矩阵,输出所有可能结果,一点头绪都没有,做出的这个程序
#include<iostream>
#include<stdio.h>
using namespace std;

int main()
{
    int a[9];
    int jz[3][3];//定义矩阵
    int k,x,n=0,m=0,y;
    cout <<"请以任意顺序输入1~9:" <<endl;
    for(int i=0;i<=8;i++)//将数组a的元素填入矩阵中
    {
        k=a[i];
        cin >>k;//此为输入数组a的元素
        jz[m][n]=k;
        if(n<3)
            n++;
        else
        {
            n=n-2;
            m++;
        }
        break;
    }
    for(m=0;m<=2;m++)
    {
        for(n=0;n<=2;n++)
        {
            if(jz[m][n]<jz[m+1][n])
            {
                if(jz[m+1][n]<jz[m][n+1])//交换矩阵中的元素位置
                {
                    y=jz[m][n];
                    jz[m][n]=jz[m+1][n];
                    jz[m+1][n]=y;
                }
                else
                {
                    y=jz[m][n];
                    jz[m][n]=jz[m][n+1];
                    jz[m][n+1]=y;
                }
            }
            cout <<jz[m][n] <<" ";//输出矩阵
        }
        cout <<endl;
    }
}

问题是编译连接都无错,但是在运行的时候矩阵中元素没有发生交换,是什么原因?
这个思路有问题,不能输出所有结果,但是好像随机数函数不好用,怎么办?
搜索更多相关主题的帖子: include 元素 
2014-03-28 17:20
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:14 
tmd谁那么刁,居然还有杨氏矩阵,有没有杨氏语言

第一眼的错误:
if(n<3)
那么n=2不会为假状态吧,如果n=2还继续执行n+1是真的吧那么下一次就是n=3
那n=3这个条件就为假吧,执行else吧,那看看n=n-2就是1吧,下标错了吧
其它没看
2014-03-28 17:41
紫罗兰丹丹
Rank: 2
等 级:论坛游民
威 望:1
帖 子:14
专家分:13
注 册:2014-3-28
收藏
得分:0 
回复 2楼 天使梦魔
试着把n<3改成n<2,结果还是不会进行矩阵中的元素交换。。比如,输入3 4 7 9 1 6 5 2 8,输出就是
3 4 7
9 1 6
5 2 8.。
怎样改能让矩阵元素进行交换?
2014-03-28 23:20
快速回复:杨氏矩阵
数据加载中...
 
   



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

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