阅读背景:

【c语言】:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点

来源:互联网 
//题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。
//
#include "stdio.h" 
#include <stdlib.h>
int main() 
{ 
    int i,j,k,hang=1,lie=1; 
    printf("输入行");
    scanf("%d",&hang);
    printf("输入列");
    scanf("%d",&lie);
    printf("请输入该矩阵的元素,行内左至右顺序输入,行间上至下顺序输入,按回车完成一个元素的输入:\n"); 
    int zong=hang*lie;

    int *a;
    a=(int *) malloc (zong * sizeof(int));
    printf("请输入 %d 个元素: ", zong);
    for (i = 0; i < zong; i++)
    scanf("%d", &a[i]); 
    printf("\b \n"); 

    int **data;


    data = (int **) malloc (hang * sizeof(int *));
    for(int j=0;j<hang;j++)
    {
        data[j] = (int *)malloc(lie*sizeof(int)); 
    }
    for (int k=0,i=0;k<hang;k++)
    {

        for (int j=0;j<lie;j++)
        {
            
            data[k][j]=a[i];
                        i++;
            
                        
        }
    }
    free(a);
        
    int *rmax;
    rmax=(int *) malloc (hang * sizeof(int));
    
    
    for(k=0;k<hang;k++) 
    {
        rmax[k]=0;
        for(j=0;j<lie;j++)
        { 
            
            if(data[k][j]>=rmax[k]) 
            {
                rmax[k]=data[k][j]; 
                
            }
        } 
        
    }
    int*cmin;
    cmin=(int *) malloc (lie * sizeof(int));
    
    for(j=0;j<lie;j++) 
    {
        cmin[j]=0;
        for(k=0;k<hang;k++) 
        {
            if(k==0)
                cmin[j]=data[k][j];
            if(data[k][j]<=cmin[j]) 
            {
                cmin[j]=data[k][j]; 
            } 
        }
            
    }
    
    for(j=0;j<hang;j++)
        for(k=0;k<lie;k++)
        {
            if(rmax[j]==cmin[k])
                printf("data[%d][%d]=%d\n",j+1,k+1,rmax[j]); 
        }//这里要用到循环比较,下面这样不行 
    
//    if(rmax[k]==cmin[j])
//        printf("data[%d][%d]=%d\n",k+1,j+1,rmax[k]); 
//    else 
//        printf("It is not exist!\n");

    for (i=0;i<hang;i++)
    {
            free(data[i]); 
    } 
    free(data);
    system("pause");
}//题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: