zoukankan      html  css  js  c++  java
  • 深信服 长方体的摆放

    链接:https://www.nowcoder.com/questionTerminal/7131601fbf5748df8bf4ed564ce9b07a
    来源:牛客网

    一个长方体,长宽高分别为x,y,z,都为自然数。

    现在要把若干个相同的长方体摆成高为N的一根柱形体。

    每层摆1个,如果两种摆法的高度是一样的,则认为这两种摆法等价,所以每层只有三种摆法。

    求一共有多少种摆法。
    输入描述:
    第一行为一个数字N,N>=1且N<=100,表示要摆放的高度
    第二行为长方体的长宽高,x、y、z都为无符号整数,按升序排列。


    输出描述:
    摆法总数,已知该总数会小于10000000
    示例1

    输入

    10
    5 6 7

    输出

    1
    备注:
    如果没有任何一种摆法可以达成目的,输出0
    #include<iostream>
    #include<algorithm>
    #include<string.h>
    #include<string>
    #include<vector>
    #include<stack>
    using namespace std;
    int n,cnt=0;
    int a[3];
    void dfs(int h)
    {
        if(h==n)
        {
            cnt++;
            return ;
        }
        else if(h>n)
            return ;
        else
        {
            for(int i=0;i<3;i++)
            {
                h=h+a[i];
                dfs(h);
                h=h-a[i];
            }
        }
    }
    int main()
    {
         
        cin>>n;
        cin>>a[0]>>a[1]>>a[2];
        dfs(0);
        cout<<cnt<<endl;
        return 0;
    }

    链接:https://www.nowcoder.com/questionTerminal/212c0df2ecaf4d73898a0dfa1a56c3fc
    来源:牛客网

    一个数字段由首尾两个数字标识,表示一个自然数集合,
    比如数字段[beg, end)表示从beg到end之间的所有自然数,
    包含beg,但不包含end。

    有若干个数字段,这些数字段之间可能有重叠,
    怎么把这些数字段合并去重,用最少个数的数字段来表示。

    合并前后,整个集合包含的数字不发生变化。

    输入描述:
    第一行为数字N,表示接下来有N个数字段(N<=100000)
    第二行开始一共有N行,每行两个数字,分别表示一个数字段的beg和end
    (beg和end为无符号32位整数)


    输出描述:
    合并去重后形成的数字段集合,按升序排列。
    示例1

    输入

    4 
    3 8
    3 7
    4 6
    7 9
    

    输出

    3 9
    #include<iostream>
    #include<algorithm>
    #include<string.h>
    #include<string>
    #include<vector>
    #include<stack>
    using namespace std;
    struct node
    {
        int x;
        int y;
    }p[100005],pp[1000005];
    bool cmp(node a,node b)
    {
        if(a.x==b.x)
            return a.y>b.y;
        else
            return a.x<b.x;
    }
    bool cmp1(node a,node b)
    {
        return a.x<b.x;
    }
    int main()
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>p[i].x>>p[i].y;
        sort(p,p+n,cmp);
     
        // cout<<"------sort-----"<<endl;
        // for(int i=0;i<n;i++)
        //     cout<<p[i].x<<' '<<p[i].y<<endl;
     
        int l=p[0].x,r=p[0].y,t=0,flag=0;
        for(int i=1;i<n;i++)
        {
            if(r>=p[i].x&&r>=p[i].y)
                continue;
            else if(r>=p[i].x&&r<p[i].y)
                r=p[i].y;
            else if(r<p[i].x)
            {
                flag=1;
                pp[t].x=l;
                pp[t].y=r;
                l=p[i].x;
                r=p[i].y;
                t++;
            }
        }
        pp[t].x=l;
        pp[t].y=r;
        t++;
        sort(pp,pp+t,cmp1);
        for(int i=0;i<t;i++)
            cout<<pp[i].x<<' '<<pp[i].y<<endl;
        return 0;
    }
  • 相关阅读:
    Unity Shader _Time 的单位
    egg-sequelize 实现 增删改查
    Eggjs 联表查询
    Eggjs 菜单权限管理
    Eggjs 角色管理 -- 对角色树进行 增删改查
    Egg.js 实现一维的对象数组转化为树形数组
    Egg.js 中 Session 的设置和获取
    Egg.js 中 Cookie 的设置和获取
    Egg 安全机制 CSRF 的防范
    Egg middleware 中间件
  • 原文地址:https://www.cnblogs.com/-citywall123/p/11732192.html
Copyright © 2011-2022 走看看