| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1708 人关注过本帖
标题:定义二维数组,求一个数在行上是最小,列上也是最小
只看楼主 加入收藏
连娜娜
Rank: 1
来 自:苏州
等 级:新手上路
帖 子:18
专家分:0
注 册:2011-4-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
定义二维数组,求一个数在行上是最小,列上也是最小
定义一个n行n列的二维数组,例如:n=4,输入该数组中的全部数据,可以在定义数组中赋予常量值。
求二维数组中这样元素的位置:它在行上是最小,在列上也是最小。(注意:它未必是整个数组的最小元素)
定义一个n行n列的二维数组,例如:n=4,输入该数组中的全部数据,可以在定义数组中赋予常量值。
求二维数组中这样元素的位置:它在行上是最小,在列上也是最小。(注意:它未必是整个数组的最小元素)
搜索更多相关主题的帖子: 元素 
2011-05-06 13:23
唯我独魔
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:176
专家分:782
注 册:2011-4-13
收藏
得分:10 
#include<stdio.h>
int f(int b[100][100],int l,int m,int n);
int main(void)
{
    int n;
    int a[100][100];
    scanf("%d",&n);
    int i,j,k;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    for(i=0;i<n;i++)
    {
        for(j=1,k=0;j<n;j++)
           if(a[i][k]>a[i][j]) k=j;
        for(j=0;j<n;j++)
            if(a[i][j]==a[i][k])
              if(f(a,i,j,n))
                printf("满足条件的位置有第%d行,第%d列\n",i+1,j+1);
    }
    return 0;
}
int f(int b[100][100],int l,int m,int n)
{
    int i;
    for(i=0;i<n;i++)
        if(b[l][m]>b[i][m]) return 0;
    return 1;
}
2011-05-06 15:22
周1992
Rank: 2
等 级:论坛游民
帖 子:70
专家分:60
注 册:2011-3-18
收藏
得分:0 
回复 2楼 唯我独魔
int f(int 。。。。。
 什么意思
2011-05-06 15:39
xiangqiu1986
Rank: 2
等 级:论坛游民
帖 子:79
专家分:95
注 册:2011-5-5
收藏
得分:0 
你应该讲的更清楚些

学无止境!
2011-05-06 15:40
唯我独魔
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:176
专家分:782
注 册:2011-4-13
收藏
得分:0 
以下是引用xiangqiu1986在2011-5-6 15:40:24的发言:

你应该讲的更清楚些
下面还有一个一样的帖子,那里我讲得比较清楚,呵呵
2011-05-06 15:41
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:10 
程序代码:
/*
** -- GET_SMALL.C----------------------------------
** ZhouFeng 2011/5/06
** bbs.bccn.net
** ------------------------------------------------
*/
#define LINES     10
#define COLUMNS   10
#define TYPE int
#define P_ISNULL(p)            \
    if(p == 0)                 \
        return;
#define P_ISNULL_R(p, value)   \
    if(p == 0)                 \
        return value;                         

typedef TYPE array[][COLUMNS];

struct
{
    int lIndex;
    int cIndex;   
}LC_SMALL[LINES > COLUMNS ? LINES : COLUMNS];        /* 结构为保存符合要求的行、列索引 */

#include <stdio.h>
#include <stdlib.h>

TYPE GetLineMin(array, int);                        /* 获取行最小值 */
TYPE GetColumnMin(array, int);                      /* 获取列最小值 */
int GetMin(array );                                 /* 获取行列都是最小值,返回值为找到符合要求的个数 */

int main(int argc, char* argv[])
{
    int i, j, a[LINES][COLUMNS];
    int smallCount = 0;
   
    for(i = 0; i < LINES; ++i)
    {
        for(j = 0; j < COLUMNS; ++j)
        {
            a[i][j] = rand() % 100;
        }   
    }
   
    smallCount = GetMin(a);
    printf("---SMALL VALUE IN COLUMNS AND LINES---\n");
    for(i = 0; i < smallCount; ++i)
    {
        printf("Line[%2d]\tColumn[%2d]\tValue[%2d]\n",
            LC_SMALL[i].lIndex,    LC_SMALL[i].cIndex,
            a[LC_SMALL[i].lIndex][LC_SMALL[i].cIndex]);
    }
    /* Print Array */
    printf("--- Array Is Here ---\n");
    for(i = 0; i < LINES; ++i)
    {
        for(j = 0; j < COLUMNS; ++j)
        {
            printf("%2d ",a[i][j]);
        }   
        printf("\n");
    }
   
    return 0;
}

TYPE GetLineMin(array a, int lIndex)
{
    int i;
    TYPE min;
   
    P_ISNULL_R(a, 0)
    min = a[lIndex][0];
    for(i = 0; i < LINES; ++i)
    {
        if(min > a[lIndex][i])
        {
            min = a[lIndex][i];   
        }   
    }   
   
    return min;
}

TYPE GetColumnMin(array a, int cIndex)
{
    int i;
    TYPE min;
   
    P_ISNULL_R(a, 0)
    min = a[0][cIndex];
    for(i = 0; i < COLUMNS; ++i)
    {
        if(min > a[i][cIndex])
        {
            min = a[i][cIndex];   
        }   
    }   
   
    return min;
}

int GetMin(array a)
{
    int i, j, count = 0;
   
    P_ISNULL_R(a, -1)
   
    for(i = 0; i < LINES; ++i)
    {
        for(j = 0; j < LINES; ++j)
        {
            if(a[i][j] == GetLineMin(a, i) && a[i][j] == GetColumnMin(a, j))
            {
                LC_SMALL[count].lIndex = i;
                LC_SMALL[count].cIndex = j;
                ++count;
            }
        }   
    }
   
    return count;
}
没有输入部分,自己加吧。
输起来太费劲了。
2011-05-06 16:56
BYSF_XF
Rank: 2
等 级:论坛游民
帖 子:89
专家分:75
注 册:2011-4-25
收藏
得分:0 
先查找该行上最小值所在列(注意不是最小值是多少),然后判断其是否为所在列最小值。这个与鞍点的判断差不多
2011-05-06 20:59
yuanben0503
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-11-24
收藏
得分:0 
#include<stdio.h>
#define N 20

void main()
{
    int i,j,k,n,a[N][N];
    printf("请输入矩阵的阶数:");
    scanf("%d",&n);
    printf("%d阶矩阵为:\n",n);
    for(i=0;i<n;i++)//输入矩阵的数
    {
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    }

    for(i=0;i<n;i++)//打印矩阵
    {
        for(j=0;j<n;j++)
            printf("%4d",a[i][j]);
        if(j%n==0)
        {
            printf("\n");
        }
    }
   
    for(i=0;i<n;i++)
    {
        for(j=0,k=0;j<n;j++)
            if(a[i][j]<a[i][k])    k=j;
        for(j=0;j<n;j++)
            if(a[j][k]<a[i][k])    break;
        if(j>=n)
            printf("%d(%d,%d)\n",a[i][k],i+1,k+1);

    }
}
2019-12-08 16:25
快速回复:定义二维数组,求一个数在行上是最小,列上也是最小
数据加载中...
 
   



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

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