/*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;
}
逻辑题(重点!)
像鱼4702023-07-22 23:10
相关推荐
汀、人工智能2 分钟前
[特殊字符] 第97课:前K个高频元素沉鱼.443 分钟前
第十四届题目美式请加冰20 分钟前
简单多状态问题计算机安禾23 分钟前
【数据结构与算法】第38篇:图论(二):深度优先搜索(DFS)与广度优先搜索(BFS)佑白雪乐26 分钟前
<LeetCode>二叉树前/中/后/层遍历**递归&&非递归**汀、人工智能30 分钟前
[特殊字符] 第56课:在排序数组中查找元素的首末位置小O的算法实验室32 分钟前
2026年IEEE TASE,面对突发危险区域的基于强化学习的多无人机路径规划,深度解析+性能实测AI科技星36 分钟前
全维度相对论推导、光速螺旋时空与北斗 GEO 钟差的统一理论ECT-OS-JiuHuaShan40 分钟前
科学的本来意义,是基于规范的共识逻辑,而非共识方法木子墨5161 小时前
LeetCode 热题 100 精讲 | 动态规划进阶篇:最大子数组和 · 分割等和子集 · 最长公共子序列 · 打家劫舍 III