码迷,mamicode.com
首页 > 其他好文 > 详细

2016搜狗:矩阵元素相乘

时间:2016-07-22 22:59:13      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:

题目
矩阵元素相乘

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

解题

直接暴力

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            String[] line = in.nextLine().split(" ");
            int r = Integer.valueOf(line[0]);
            int c = Integer.valueOf(line[1]);
            int[][] A = new int[r][c];
            for(int i=0;i<r;i++){
                line = in.n extLine().split(" ");
                for(int j=0;j<c;j++){
                    A[i][j] = Integer.valueOf(line[j]);
                }
            }
            int Max = 0;
            for(int i=0;i< r;i++){
                for(int j=0;j<c;j++){
                    int subMax = calculate(A,i,j,r,c);
                    Max = subMax > Max?subMax:Max;
                }
            }
            System.out.println(Max);
            
        }
    }
    public static int calculate(int[][] A,int i,int j,int r,int c){
        int sum = 1;
        for(int ri=0;ri<r;ri++){
            if(ri==i)
                continue;
            sum*=A[ri][j];
        }
        for(int cj=0;cj<c;cj++){
            if(cj==j)
                continue;
            sum*=A[i][cj];
        }
        return sum;
    }

}

 

2016搜狗:矩阵元素相乘

标签:

原文地址:http://www.cnblogs.com/theskulls/p/5697221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!