IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 摩天大楼问题 -> 正文阅读

[C++知识库]摩天大楼问题

前几天呢,一位小老弟给我分享了这道很有意思的题目,可是捏,我找遍了网络,也没有找到这个题的题解,于是乎,余勇当此题拓荒者也!

来人哪,把题目献上来!

题目描述

摩天大楼是日本人创作的游戏。 它于1992年在纽约举行的第一届世界益智冠军赛上获得了首次广泛曝光,当时发行商Sekai Bunka-sha向竞争对手介绍了他们的《 Puzzer》杂志。 在美国,Kevin Stone对其进行了增强。
该游戏如下所示:在每个正方形中放置一个高度为1到5的摩天大楼,该行中任意两个摩天大楼的高度都不相同。输入的值共两个,分别是从左右能看到的大楼数量(高楼会挡住底楼哦)。

在上面的示例中,从左侧看,可以看到4座摩天大楼:#2,#3,#4和#5。 #1被#3阻挡。 从右侧看,只能看到一个摩天大楼。 #5阻止所有其他大楼。 因此,左侧的数据为4,右侧的数据为1。

输入描述

共一行输入,表示从左侧和从右侧看到的大楼数量。

输出描述

共一行,输出有几种摆放的情况可以满足输入。

样例

输入

1 2

输出

6

其实这个题说难也不难,简直可以约等于简单。这个题乍一看蛮唬人的,但是如果你仔细想想,就会发现这个题,不就是个模拟算法的题吗?真是《简单极了》!(话虽这么说,本蒟蒻想了不下四十分钟)因为这个题没有什么规律可言,所以说只能根据提描述来列举出所有情况进行模拟,过程如下:
列举1-5个楼高的所有排列方式。
判断从右往左可以看到几个楼。
判断从左往右可以看到几个楼。

判断左右测看到的楼高是否符合要求,符合则计数。

所以,上代码!

#include<iostream>
using namespace std;
int main(){
    int a[6],l,r,sum=0;
    cin>>l>>r;
    for(int i=1;i<=5;i++){
    for(int j=1;j<=5;j++){
    for(int k=1;k<=5;k++){
    for(int m=1;m<=5;m++){
    for(int n=1;n<=5;n++){
        if(i!=j&&i!=k&&i!=m&&i!=n&&j!=k&&j!=m&&j!=n&&k!=m&&k!=n&&m!=n){
            int suml=1,sumr=1;
            a[1]=i,a[2]=j,a[3]=k,a[4]=m,a[5]=n;
            int ll=a[1],rr=a[5];
            for(int ii=1;ii<=5;ii++){
                if(a[ii]>ll){
                    suml++;
                    ll=a[ii];
                }
            }
            for(int ii=5;ii>=1;ii--){
                if(a[ii]>rr){
                    sumr++;
                    rr=a[ii];
                }
            }
            if(suml==l&&sumr==r){
                sum++;
            }
        }
    }
    }
    }
    }
    }
    cout<<sum;
}

最后想弱弱问一句,有没有更简洁的方法(值代码行数少)?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 20:37:10  更:2021-09-12 20:37:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 4:44:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码