7216:Minecraft

简介: 总时间限制: 1000ms内存限制: 65536kB描述Minecraft是一个几乎无所不能的沙盒游戏,玩家可以利用游戏内的各种资源进行创造,搭建自己的世界。在Minecraft中,基本的建筑元素是边长为1个单位的立方体,Tony想用N个这种小立方体搭建一个长方体,并用他珍藏已久的贴纸对其进行装饰。
总时间限制: 1000ms内存限制: 65536kB
描述

Minecraft是一个几乎无所不能的沙盒游戏,玩家可以利用游戏内的各种资源进行创造,搭建自己的世界。

在Minecraft中,基本的建筑元素是边长为1个单位的立方体,Tony想用N个这种小立方体搭建一个长方体,并用他珍藏已久的贴纸对其进行装饰。如果一张贴纸可以贴满小立方体的一个面。那么,他需要用掉多少张贴纸呢?

输入
一个整数N,表示小明所拥有的小立方体的个数。N不会超过1000。
输出
一个整数,即小明最少用掉的贴纸有多少张。
样例输入
9
样例输出
30

思路:体积固定,枚举长、宽、高算最小表面积即可,长、宽、高按升序排列,可去掉一些无谓的遍历。

鉴于n值太小,本题完全可以用枚举法操作。

本题要在不同种方块摆法中挑选出使用贴纸最少的一种,由于需要摆一个三维的物品,那么变量就会用到i,j,h,类似于解三元不定方程,将所有的情况列举出来再判断即可。

为了避免重复枚举,我们可以使用“由小枚举到大的策略”,即每次枚举都使i<=j<=h,那么i,j<=n/3; 

限制枚举的范围,可以提高百分之六十的效率。

那么代码便信手拈来了,两重循环,计算所需贴纸数量,判断是否为最少的方案,存储,输出答案。

 1 #include<stdio.h>  
 2 #include<stdlib.h>  
 3 #include<string.h>  
 4 #include<math.h>  
 5   
 6 int main()  
 7 {  
 8     int n,min=999999,h,now,i,j;  
 9     scanf("%d",&n);  
10     for(i=1;i<=n/3;i++)  
11         for(j=i;j<=n/3;j++)  
12             if(n%(i*j)==0)  
13             {  
14                 h=n/(i*j);  
15                 now=i*j*2+i*h*2+j*h*2;  
16                 if(now<min)  
17                     min=now;  
18             }  
19     printf("%d",min);  
20     return 0;  
21 }  

代码来源:http://blog.csdn.net/mrh929/article/details/50626191

 

相关文章
|
6月前
|
算法 机器人 Python
机器人逆运动学进阶:李代数、矩阵指数与旋转流形计算
本文深入讲解机器人逆运动学中旋转计算的核心数学工具,包括矩阵指数与对数、SO(3)李群与李代数、流形和切空间等概念,帮助理解三维旋转误差计算原理,并提供基于矩阵指数的精确旋转更新方法及代码实现。
375 1
机器人逆运动学进阶:李代数、矩阵指数与旋转流形计算
|
7月前
|
SQL 前端开发 JavaScript
占位符含义及用法
占位符”这个概念非常常见,涵盖编程、数据库、前端开发、文档模板等多个领域。下面我帮你详细讲解占位符的含义和几类常见用法。
|
8月前
|
存储 算法 芯片
实现p10点阵屏16 32单屏汉字静态、左滚显示,数字静态显示
实现p10点阵屏16 32单屏汉字静态、左滚显示,数字静态显示
202 0
|
安全 数据处理 数据安全/隐私保护
C/S架构与B/S架构的适用场景分析
C/S架构(客户端/服务器架构)与B/S架构(浏览器/服务器架构)在适用场景上各有特点,主要取决于应用的具体需求、用户群体、系统维护成本、跨平台需求等因素。
1368 6
|
移动开发 前端开发 搜索推荐
《前端技术基础》第01章 HTML基础【合集】
超文本标记语言(HyperText Markup Language,简称 HTML)是构建网页结构的基础标记语言。它与 CSS、JavaScript 协同,负责搭建网页“骨架”,用标签组织内容,像标题、段落、图片等元素,通过起始与结束标签(部分可单用,如`<img>`)界定层级与布局,将信息有序整合。标签含特定语义,向浏览器传达展示方式,为网页准确呈现及后续美化、交互筑牢根基。
486 25
|
存储 对象存储 C++
C++ 中 std::array<int, array_size> 与 std::vector<int> 的深入对比
本文深入对比了 C++ 标准库中的 `std::array` 和 `std::vector`,从内存管理、性能、功能特性、使用场景等方面详细分析了两者的差异。`std::array` 适合固定大小的数据和高性能需求,而 `std::vector` 则提供了动态调整大小的灵活性,适用于数据量不确定或需要频繁操作的场景。选择合适的容器可以提高代码的效率和可靠性。
|
数据可视化 Python Windows
Matplotlib输出中文显示的2种解决方案
Matplotlib输出中文显示的2种解决方案
828 1
|
存储 编解码 算法
无损压缩和有损压缩
【4月更文挑战第26天】无损压缩和有损压缩
1787 2

热门文章

最新文章