`
zy3381
  • 浏览: 155498 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

寻找鞍点(行最大,列最小)

 
阅读更多
#include<stdio.h>
void main()
{
    int a[3][3]= {
                  3,6,-1,
                  4,5,1,
                  8,7,3,
                  };
    int i,j,k;
    int mini,maxj,minIndexI,maxIndexJ;
    for(k=0; k<3; k++)
    {
        printf("找行最大:\n");
        maxj = a[k][0];
        maxIndexJ = k;
        for(j=0; j<3; j++)
        {
            if(maxj < a[k][j])
            {
                maxj = a[k][j];
                maxIndexJ = j;
            }
            printf("第%d行的最大下标:%d\n", k+1,maxIndexJ+1);
        }

        printf("找列最小:\n");
        mini = a[k][maxIndexJ];
        minIndexI = k;
        for(i=0; i<3; i++)
        {
            if(mini > a[i][maxIndexJ])
            {
                minIndexI = i;
            }
        }
        if(minIndexI == k)
        {
            printf("###########找到鞍点,行%d,列%d\n", minIndexI+1,maxIndexJ+1);
        }
        else
        {
            printf("第%d行没找到鞍点...\n", k+1);
        }
    }
}






闲着无聊,又温习了一遍....


#include<stdio.h>
#define N 4
#define M 4
void findSaddlePoint(int a[N][M], int n, int m)
{
    int i,j;
    int maxRow,maxRowX,minColumnY;
    for(i=0; i<n; i++)
    {
        //假定第i行的最大值在第0个位置
        maxRowX = 0;
        minColumnY = i;
        //记录这个最大值
        maxRow = a[i][maxRowX];
        //寻找行最大值以及行最大值所在的列
        for(j=1; j<m; j++)
        {
            if(a[i][j] > maxRow)
            {
                maxRow = a[i][j];
                maxRowX = j;
            }
        }

        //对于已找到的第i行的最大值,判断是否为所在列(maxRowX)的最小值
        for(j=0; j<n; j++)
        {
            //如果发现该列有更小的值,则不是鞍点
            if(a[j][maxRowX] < a[i][maxRowX])
            {
                minColumnY = j;
                break;
            }
        }
        //如果对该列遍历结束后发现该列的第i行仍然是最小值,则找到鞍点
        if(minColumnY == i)
        {
            printf("找到鞍点%d (y:%d, x:%d)", a[minColumnY][maxRowX], minColumnY+1, maxRowX+1);
        }
    }
}
void main()
{
    //有鞍点
    int a[N][M]= {
                  1,2,3,4,
                  3,4,5,6,
                  5,6,7,8,
                  6,7,8,9,
                  };
/*
    //无鞍点
    int a[N][M]= {
                  2,1,1,1,
                  1,2,3,4,
                  4,5,6,7,
                  9,8,7,6,
                  };
                  */
    findSaddlePoint(a, N, M);
}







分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics