250:BallsSeparating

题意:

给你很多盒子,盒子里有红黄蓝三种球,然后,你可以把一个球从一个盒子移动到另一个盒子里去,问你最少移动几次。。。

分析:

由于盒子不多,我们直接枚举三个终点盒子给三种颜色,其余的直接贪心就好了。。。

代码:

int ans,siz;
int BallsSeparating::minOperations(vector  red, vector  green, vector  blue) {
    siz=red.size();ans=inf;
	if(siz<3)return -1;
	for(int i=0;i<siz;i++)
		for(int j=0;j<siz;j++)
			for(int k=0;k<siz;k++)
			{
				int sum=0;
				if(i==j||j==k||k==i)
					continue;
				for(int l=0;l<siz;l++)
				{
					if(l==i)
						sum+=green[l]+blue[l];
					else if(l==j)
						sum+=red[l]+blue[l];
					else if(l==k)
						sum+=red[l]+green[l];
					else 
						sum+=red[l]+green[l]+blue[l]-max(red[l],max(green[l],blue[l]));
				}
				ans=min(sum,ans);
			}
	return ans;
}

Leave A Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注