装麻饼【OH MY】

这又是一道坑神的题
题目:
合肥生产的麻饼、烘糕、寸金、白切统称为合肥四大名点,历史悠久,风味独特,是合肥四大传统特产,历来被人们用作待客和馈赠的礼品。

当然摩尔庄园的麻饼不但精致,还比较大,为了减少浪费,麻饼从工厂里生产出来的时候,是一小块扇形的固体,一共有4种规格,编号为1~4,分别是圆心角为72º,144º,216º,288º的扇形,4种规格的半径都一样。麻饼的盒子是圆形的,半径和麻饼的半径一致。也就是说,如果将一块1号麻饼和一块4号麻饼可以恰好装入一个盒子,一块2号麻饼和一块3号麻饼可以恰好装入一个盒子。现在已知的4种规格麻饼的数量,你的任务是写一个程序,帮助可可计算最多可以装满多少个盒子。

这道题开始,我就只考虑了1-4,2-3的情况,然后就交了。错了,我当时就很纳闷,。。。。。。。。。。。。。。
装麻饼【OH MY】
肯定还有其他情况!
一小时后…
我发现了一共有6种组合。
但是怎样确定先后顺序呢?
【一脸懵逼】

后来,思路:
因为大的不好分,就尽量多的去消耗大的,剩下的零零散散的小的就很容易拼,就像什么那个5a,就可用剩下的零零散散的a来拼。

嗲马 代码如下:

#include <bits/stdc++.h>
   
using namespace std;
   
   
   
int main(){
   
   
   
    long a,b,c,d,ans=0,x;
    cin>>a>>b>>c>>d;
    if(a<d){
        x=a;
    }
    else{
        x=d;
    }
    ans+=x;
    a-=x;
    d-=x;
    if(b<c){
        x=b;
    }
    else{
        x=c;
    }
    ans+=x;
    b-=x;
    c-=x;
    if(a/2<c){
        x=a/2;
    }
    else{
        x=c;
    }
    ans+=x;
    a-=x*2;
    c-=x;
    if(a<b/2){
        x=a;
    }
    else{
        x=b/2;
    }
    ans+=x;
    a-=x;
    b-=2*x;
    if(a/3<b){
        x=a/3;
    }
    else{
        x=b;
    }
    ans+=x;
    a-=x*3;
    b-=x;
    ans+=a/5;
    cout<<ans;
       
   
   
}

这用min也可以:

#include <bits/stdc++.h>
   
using namespace std;
   
   
   
int main(){
   
   
   
    long a,b,c,d,ans=0,x;
    cin>>a>>b>>c>>d;
    x=min(a,d); 
    ans+=x;
    a-=x;
    d-=x;
    x=min(b,c);
    ans+=x;
    b-=x;
    c-=x;
    x=min(c,a/2);
    ans+=x;
    a-=x*2;
    c-=x;
    x=min(a,b/2);
    ans+=x;
    a-=x;
    b-=2*x;
    x=min(a/3,b);
    ans+=x;
    a-=x*3;
    b-=x;
    ans+=a/5;
    cout<<ans;
       
   
   
}

goodbye!!!
装麻饼【OH MY】

上一篇:实验7:基于REST API的SDN北向应用实践


下一篇:安装zsh