| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 324 人关注过本帖
标题:错在哪?
取消只看楼主 加入收藏
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
结帖率:92.86%
收藏
已结贴  问题点数:5 回复次数:0 
错在哪?
问题描述

找一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(各行、列上不存在相等的数)。鞍点最多一个,也可能不存在。

输入

第一行是测试数据的组数。以下每组数据的首行是二维数组的行数和列数(行和列的数目均不大于100),之后为二维数组。

输出

对输入的每组测试数据,如果存在鞍点,输出鞍点所在的行、列及其值;如果不存在,输出"N"

输入样例

2
2 2
1 3
3 2
3 3
11 22 33
99 33 55
44 55 66

输出样例

N
0 2 33
代码如下:
#include<stdio.h>
void saddlepoint(int a[][100])
{
    int i, j, k, max, maxj,b,c;
    int flag=0;
    for(i=0; i<b; i++)
    {
        max=a[i][0];    maxj=0;
        for(j=0; j<c; j++)
            if(a[i][j]>max)
            {
                max=a[i][j];   
                maxj=j;
            }
    }
    for(k=0; k<c; k++)
    {
        if(max>a[k][maxj])   
            break;
        else if(k==b-1)
        {
            flag=1;
            printf("%d %d %d\n", i, maxj, max);
        }
    }
    if(!flag)   
        printf("N\n");
}
int main()
{
    int i, j, a[100][100];
    int b,c,k,n;
    scanf("%d",&n);
    for(k=1;k<=n;k++)
    {
        scanf("%d %d",&b,&c);
        for(i=0; i<b; i++)
        {
            for(j=0; j<c; j++)
            {
                scanf("%d", &a[i][j]);
            }
        }            
        saddlepoint(a);
    }
    return 0;
}
为什么输出全是N?

2009-11-09 19:22
快速回复:错在哪?
数据加载中...
 
   



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

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