注册 登录
编程论坛 数据结构与算法

这是一个神马程序,我简直要疯掉了,大家来看看

long361800 发布于 2011-08-02 19:06, 663 次点击
  假设矩阵A中存在这样的一个元素A[i][j]满足条件:A[i][j]是第i行中值最小的元素,且又是j列中值最大的元素,则称之为该矩阵的一个马鞍点。

求马鞍点代码如下::

#include <stdio.h>

#define Max   10

typedef  struct
    {
        int cols;
        int rows;
        int data;
    }B[10];

void main()
{
    int n;
    int i,j,num,t;
    int min,max;
    int A[Max][Max];
   
    printf("请输入N*N阶矩阵的维数N(<10): ");
    scanf("%d",&n);
   
    for(i=0;i<n;i++)
    {
    printf("请输入第%d行元素:",i+1);
    for(j=0;j<n;j++)
    {
    scanf("%d",&num);
    A[i][j]=num;
    }
    }

    printf("输入的矩阵为:\n");
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        printf("%3d",A[i][j]);
        printf("\n");
    }
    printf("\n");

  for(i=0;i<n;i++)
{
    min=A[i][0];
    B[i].data=A[i][0];
    B[i].cols=0;
    for(j=0;j<n;j++)
  {
    if(A[i][j]<min)
     {
        min=A[i][j];
        B[i].data=A[i][j];
        B[i].cols=j;
     }
    } //for
    } //for

for(j=0;i<n;i++)
{
    max=A[0][j];
    B[j].rows=0;
    for(i=0;j<n;j++)
    {
    if(A[i][j]>max)
    {
        max=A[i][j];
        //B[j].data=A[i][j];
        B[j].rows=i;
    }
    }
}

    for(i=0;i<n;i++)
    {
        t=B[i].cols;
        if(i==B[t].rows)
        printf("马鞍值为: %3d",B[i].data);
    }
    printf("\n");


    getchar();
    getchar();

}

这是一个神马程序,我简直要疯掉了,大家来看看。。。。。。。。提点建议。。。。。。。。。
5 回复
#2
世界模型2011-08-02 21:43
这个就是求鞍点啊
谭浩强书上有
#3
世界模型2011-08-02 21:44
你哪里看不懂
#4
long3618002011-08-03 19:16
回复 3楼 世界模型
我这个程序错误太多了啊。。。。。。。我自己又换了一种方法写出来了。。。。。。但是这个程序怎么有那么多的错误????
#5
爱德华2011-09-08 13:40
要有耐心看,才看得清楚,
for(j=0;i<n;i++)
 {
     max=A[0][j];
     B[j].rows=0;
     for(i=0;j<n;j++)
     {
     if(A[i][j]>max)
     {
         max=A[i][j];
         //B[j].data=A[i][j];
         B[j].rows=i;
     }
     }
 }
 
    for(i=0;i<n;i++)
     {
         t=B[i].cols;
         if(i==B[t].rows)
         printf("马鞍值为: %3d",B[i].data);
     }
    printf("\n");
 
你仔细看看这段是不是有问题。
 for(i=0;i<n;i++)
     {
         t=B[i].cols;
       if(i==B[t].rows)
         printf("马鞍值为: %3d",B[i].data);
     }

前面可以加一个for语句,同样的意思,但可以看的更清楚。
1