装箱子

<img src="https://img-blog.csdn.net/20150207203825140?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGhlb3JpZ2luYWxkcmVhbQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<pre name="code" class="cpp">/*
思想:1、统一化(体现在:能用2填补的地方就先用2填补,最终若a[2]变成了负数再处理) 
	  2、简化( 体现在:在原来数组,即/数组a上处理,已经装进箱子的相应a[i]就减一 
技巧:1、断多个数中有1个0,乘积为0;判断多个数都是0,和为0
      2、有多个特殊的情况(如:不同余数对应不同的情况)可用数组来存储数值 
*/ 
#include<iostream>
using namespace std;
int a[7];
int rest1[]={0,5,3,1};
int rest2[]={0,7,6,5};
int main()
{
	
	while(true)
	{
		int sum=0;
		for(int i=1;i<=6;i++) 
		{
			cin>>a[i];
			sum=sum+a[i];//技巧1 
		}
		if(sum==0) break;
		/*else
		{
			
		}*///此处已经break,就不用再写else
		int ans=0;
		
		//6*6
		ans+=a[6];
		a[6]=0;
		
		//5*5
		ans+=a[5];
		a[1]-=a[5]*11;
		a[5]=0;
		
		//4*4
		ans+=a[4];
		a[2]-=a[4]*5;
		a[4]=0;
		
		//3*3
		if(a[3]%4==0) ans+=a[3]/4;
		else ans=ans+a[3]/4+1;
		a[2]-=rest1[a[3]%4];
		a[1]-=rest2[a[3]%4];
		
		//处理2,1
		if(a[2]<0) 
		{
			a[1]+=a[2]*4;
			a[2]=0;
		}
		if(a[1]<0) a[1]=0; 
		ans+=(a[1]+4*a[2])/36;
		if((a[1]+4*a[2])%36!=0) 
		ans++;
		cout<<ans<<endl;
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值