小v是公司的运维工程师,现有一个有关应用程序部署的任务如下:
1、一台服务器的磁盘空间、内存是固定的,现在有N个应用程序要部署;2、每个应用程序所需要的磁盘、内存不同,每个应用程序允许访问的用户数也不同,且同一个应用程序不能在一台服务器上部署多个。
对于一台服务器而言,如何组合部署应用程序能够使得单台服务器允许访问的用户数最多?
1、一台服务器的磁盘空间、内存是固定的,现在有N个应用程序要部署;2、每个应用程序所需要的磁盘、内存不同,每个应用程序允许访问的用户数也不同,且同一个应用程序不能在一台服务器上部署多个。
输入包括三个参数,空格分隔,分别表示服务器的磁盘大小、内存大小,以及应用程序列表;
其中第三个参数即应用程序列表,表述方式为:多个应用程序信息之间用 '#' 分隔,每个应用程序的信息包括 ',' 分隔的部署所需磁盘空间、内存、允许访问的用户量三个数字;比如 50,20,2000 表示部署该应用程序需要50G磁盘空间,20G内存,允许访问的用户数是2000
单台服务器能承载的最大用户数
15 10 5,1,1000#2,3,3000#5,2,15000#10,4,16000
31000
组合部署服务5,2,15000、10,4,16000 ,可以让单台服务器承载最大用户数31000
class Solution {
/*
@param str: 输入字符串序列
@return int: 返回正确的结果
*/
public int func(String str) {
int Maxcount=0;
String[]str1=str.split(" ");
int n=Integer.valueOf(str1[0]);
int m=Integer.valueOf(str1[1]);
String[]str2=str1[2].split("#");
int[][]num=new int[str2.length][3];
for(int i=0;i<str2.length;i++)
{
String[]str3=str2[i].split(",");
for(int j=0;j<str3.length;j++)
{
int a=Integer.parseInt(str3[j]);
num[i][j]=a;
}
}
for(int i=0;i<num.length;i++)
{
for(int j=i+1;j<num.length;j++)
{
int sum=num[i][0]+num[j][0];
int sum1=num[i][1]+num[j][1];
if(sum<=n&&sum1<=m)
{
int count=num[i][2]+num[j][2];
if(count>Maxcount)Maxcount=count;
}
}
}
return Maxcount;
}
}