逻辑题(重点!)

/*A[n,m]是一个n行m列的矩阵;A[i][j]表示A的第i行j列的元素;定义x[i][j]为A的

第i行和第j列除了a[i,j]之外所有元素(共n+m-2个)的乘积,即x[i,j]=a[i,1]*a[i,2]*...*a[i,j-1]

..*a[i,m]*a[1,j]*a[2,j]...*a[i-1,j]*a[i+1,j]...*a[n,j]现输入非负整形的矩阵A[n,m]求MAX(x[i,j]),即所有x[i,j]中的最大值。

输入描述:第一行两个整数n和m。之后n行输入矩阵,均为非负整数

实例:

输入:3 5

5 1 8 5 2

1 3 10 3 3

7 8 5 5 16

输出:358400*/

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int n,m;//n是行数,m是列数

int count(int(*arr)[m],int n,int m,int subi,int subj)

{

    int ret=1;

    for(int i=0;i<n;i++)

    {

        if(i!=subi)

        {

            ret*=arr[i][subj];

        }

    }

    for(int j=0;j<m;j++)

    {

        if(j!=subj)

        {

            ret*=arr[subi][j];

        }

    }

    return ret;

}

int main(int argc,const char * argv[])

{

    printf("请输入行数和列数\n");

    scanf("%d %d",&n,&m);

    int arr[n][m];

    for(int i=0;i<n;i++)

    {

        for(int j=0;j<m;j++)

        {

            printf("请输入第%d行第%d个元素为:\n",i+1,j+1);

            scanf("%d",&arr[i][j]);getchar();

        }

    }

    int max=count(arr,n,n,0,0);

    int temp;

    for(int i=0;i<n;i++)

    {

        for(int j=0;j<m;j++)

        {

            if(0==i&&0==j)

            break;

            temp=count(arr,n,m,i,j);

            if(temp>max)

            max=temp;

        }

    }

    printf("最大值为:%d\n",max);

    return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值