| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1574 人关注过本帖
标题:求帮忙 求鞍点“找一个二维数组中的位置,同行中最大,同列中最小”
只看楼主 加入收藏
hongshuai567
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-5-29
结帖率:50%
收藏
已结贴  问题点数:2 回复次数:3 
求帮忙 求鞍点“找一个二维数组中的位置,同行中最大,同列中最小”
#include <stdio.h>
int main()
{
    int a[3][3],i,j,max,x,y;
    printf("请输入九个元素:\n");
    scanf("%d%d%d%d%d%d%d%d%d",&a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]);
    for(i=0;i<2;i++)
    {
        max=a[i][j];
        for(j=0;j<2;j++)
        {
            if(max>a[i][j+1])
                y=j;
            else
                {
                    y=j+1;
                    max=a[x][y];
                }
               
        }
        x=i;
        for(i=0;i<2;i++)
            if(a[x][y]<=a[i][j])
            printf("二维数组的鞍点是:x=%d,y=%d",x,y);
        
   
    }
}
搜索更多相关主题的帖子: max 位置 include 元素 
2012-06-05 21:26
shanshan3003
Rank: 2
等 级:论坛游民
帖 子:53
专家分:66
注 册:2011-8-29
收藏
得分:0 
你的scanf那里为什么只有第一个有&?
还有九个数不要这样输入,容易出错,最好用个双循环,依次输入,
建议:使用DEVC自己调试。
2012-06-05 21:44
missu_1314
Rank: 2
等 级:论坛游民
帖 子:46
专家分:98
注 册:2010-9-8
收藏
得分:2 
# include <stdio.h>
# include <conio.h>

typedef struct Pos
{
    int x;
    int y;
}POS;

int main(void)
{
   
    int a[3][3];
    int i, j, k;
    int max = 0, min = 0;
    POS posMax, posMin;
   
    printf("请输入9个整数:\n");
   
    for (i = 0; i < 3; i++)
        for (j = 0; j < 3; j++)
        {
            scanf("%d", &a[i][j]);
        }
   


        for (i = 0; i < 3; i++)
            for (j = 0; j < 3; j++)
            {
               
                printf("%d\t", a[i][j]);               
                if (2 == j)
                    printf("\n");
            }

        
   

        for (i = 0; i < 3; i++)
        {
            max = a[i][0];
            posMax.x = i;
            posMax.y = 0;

            for (j = 0; j < 3; j++)
            {
               
                if ( a[i][j] > max)
                {
                    max = a[i][j];
                    posMax.x = i;
                    posMax.y = j;   
                }
            }
            

        
            min = a[posMax.x][posMax.y];
            posMin.x = posMax.x;
            posMin.y = posMax.y;

            for (k = 0 ; k < 3; k++)
            {
               
                if ( a[k][posMax.y] < min )
                {
                    min = a[k][posMax.y];
                    posMin.x = k;
                    posMin.y = posMax.y;
                }                        
            }   
        

            if ( (posMax.x == posMin.x) && (posMax.y == posMin.y))
            {
                printf("a[%d][%d]: %d是鞍点\n", posMax.x, posMax.y, a[posMax.x][posMax.y]);
            }
        }
            
    return 0;
}



关键算法: 1. 寻找某一行最大值,并存贮这个最大值的位置
          2. 寻找刚才那个最大值 同列的最小值  , 存储位置
          3. 比较  最大值位置  和 最小值位置 相同则输出鞍点
2012-06-06 11:08
zbzszha
Rank: 1
等 级:新手上路
帖 子:9
专家分:9
注 册:2012-7-6
收藏
得分:0 
2012-07-06 07:41
快速回复:求帮忙 求鞍点“找一个二维数组中的位置,同行中最大,同列中最小”
数据加载中...
 
   



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

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