试题 算法训练 最大获利 java代码
import java.util.Scanner;
public class MaxMoney {
public static void main(String[] args) {
// TODO 自动生成的方法存根
//【最大获利】
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
//定义数组
long [][] a=new long [n][m]; //服务员
long [][] b=new long [n][m]; //顾客
long [][] c=new long [n][m]; //结账
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
a[i][j]=sc.nextInt();
}
}
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
b[i][j]=sc.nextInt();
}
}
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
c[i][j]=sc.nextInt();
}
}
sc.close();
//最大利润
for(int k=0;k<n;k++) {
for(int w=0;w<m;w++) {
if(a[k][w]<b[k][w]) {
c[k][w] =a[k][w]*c[k][w]; //服务员少于顾客,则消费的钱为服务员人数
}else {
c[k][w] =b[k][w]*c[k][w]; //服务员多于顾客,则消费的钱为顾客人数
}
}
}
//对每个店的每个时段盈利额按从大到小排列
for(int i=0;i<n;i++){
for(int j=m-1;j>=0;j--){
for(int k=0;k<j;k++){
long t;
if(c[i][k]<c[i][k+1]){
t=c[i][k];
c[i][k]=c[i][k+1];
c[i][k+1]=t;
}
}
}
}
long sum=0;
for(int h=0;h<n;h++) {
sum+=c[h][0]; //c[i][0]则为每天最盈利的时段的盈利金额
}
System.out.print(sum);
}
}