ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

深信服 长方体的摆放

2019-10-24 15:05:40  阅读:407  来源: 互联网

标签:end 数字 int 信服 beg 摆放 include 长方体 摆法


 

链接: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;
}

 

标签:end,数字,int,信服,beg,摆放,include,长方体,摆法
来源: https://www.cnblogs.com/-citywall123/p/11732192.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有