机器人最小能量最终结果(调试完成)
来源:互联网 发布:php动态网站开发 答案 编辑:程序博客网 时间:2024/05/21 09:02
3.机器人最少能量
/**********************************************题目要求****************************************
Paul有n个重物堆在一条线上。该重物由1连续编号到n,
最左边的物品编号为1,最右边的物品编号为n。已知每个物品的重量
,第i个物品的重量为Wi公斤。Paul需要收集所有重物,但是他很懒。
因此他打算用他全新的机器人。该机器人有两个不同的手臂 - 左手和右手,
可以连续执行以下操作:
用左手拿最左边的重物,花费Wi?l能量单位(Wi是最左边的物品的重量,
l是某一参数)。如果与之前的动作是一样的(上一次用左手)
,机器人须额外花费Ql的能量单位;
用右手拿最右边的重物,花费Wj?r能量单位
(Wj是最右边的物品的重量,r是某一参数)。
如果与之前的动作是一样的(上一次用右手),
机器人须额外花费Qr的能量单位;
Paul想让机器人花费尽可能少的能量来帮他完成任务。
他想让你来解决这个问题。你的任务是求解机器人收集所有重物可花费的最低能量值。
**********************************解题思路*******************************************************
/*初步考虑本题目应该会涉及到有关于图的问题,考虑用dijistra的问题,构建以机器人的图,然后统计最短路径
因此将会用的工具是邻接矩阵,参考使用STL的map来构建
/********************************运行要求********************************************************
【输入】
第一行是一个数T,代表有T组输入样例
每个输入样例样例有两行:第一行是五个变量n,?l,?r,?Ql,?Qr
(1?≤?n?≤?105;?1?≤?l,?r?≤?100;?1?≤?Ql,?Qr?≤?104);第二行是n个重物的重量w1,w2….wn (1?≤?wi?≤?100)。
【输出】
每个样例只有1个数,代表机器人最小消耗的能量
【输入样例】
2
3 4 4 19 1
42 3 99
4 7 2 3 9
1 2 3 4
*****************************************主程序****************************************************/
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
#define max 20
class weight//构建重物属性的类
{
public:
int w[max];//重物的质量
int No[max];//重物的号码
int area;//重物所在位置
};
class Paul
{
public:
int roboto;//机器人的位置
int n;//重物的个数
int l, r, Ql, Qr;//l参数,r参数,左边运动能量,右边运动能量
weight Num;
Paul input();
};
Paul Paul::input()
{
Paul paul;
cin >>paul.n>>paul.l >> paul.r >> paul.Ql >>paul.Qr;//依次输入个数,l参数,r参数,向左运动能量,右能量
return paul;
}
void main()
{
int T;//检验数据的行数
Paul paul;
vector<int> tempData;
cin >> T;
for (int i = 0; i < T; i++)//执行两次操作
{
paul = paul.input();//录入所要处理的值
for (int j = 0; j < paul.n; j++)//录取质量
{
paul.Num.No[j] = j;//第几个重物
cin >> paul.Num.w[j];//读入重物质量
}
/***********穷举法,将机器人的位置一个一个设置,初始设定为第一个,计算总的能量为Q=l*wi+r*wi(重复运动时候左加Ql右加Qr*/
paul.roboto = 0;
for (paul.roboto; paul.roboto < paul.n+1; paul.roboto++)
{
int r = paul.roboto;
int tempQr = 0, tempQl = 0, tempQ = 0;//保存能量暂时信息
for(r;r < paul.n; r++)//k表示在所选定物体右边的个数
{
tempQr = tempQr + paul.Num.w[r] * paul.r;
}
int l = paul.roboto;
for(l; l>0 ; l--)
{
tempQl = tempQl + paul.Num.w[l-1] * paul.l;
}
/******************************程序运行结果为576,若出现***************************/
int tempCompare = paul.n - 2 * paul.roboto;
if (abs(tempCompare) == 1)
tempQ = tempQr + tempQl;
if (tempCompare > 1)
tempQ = tempQl + tempQr + paul.Qr*(tempCompare - 1);
if(tempCompare<1) tempQ = tempQl + tempQr + paul.Ql*(abs(tempCompare) - 1);
tempData.push_back(tempQ);
}
sort(tempData.begin(),tempData.end());
}
for (auto it : tempData)
{
cout << it;
}
}
/*************************************************/
- 机器人最小能量最终结果(调试完成)
- 开发完成不是最终结果,怎样完成优化?
- JVM调优:跟踪三个月后的最终调试结果
- 能量最小原理
- OC用Dispatch处理并发完成所有任务之后执行最终的结果
- 机器人圆形队列算法(待完成)
- 我只要最终结果
- asp.net Global.asax中Session_End不能执行问题最终解释与调试结果
- ICTCLAS分词系统研究(八)--生成最终分词结果
- ICTCLAS分词系统研究(八)--生成最终分词结果
- 预测Job最终执行结果(修改Hadoop源码)
- 海底机器人问题(最小费用流)
- 2010开放源代码奖最终结果
- hive 压缩 最终结果 中间结果
- 请问无功功率最终转变为什么形式的能量了
- [完成]On Bots 翻译 (搜索引擎机器人的研究报告)
- 机器人圆形队列算法(待完成2)
- 相关性与误差能量最小准则
- How is Parameter DB_FILE_MULTIBLOCK_READ_COUNT Calculated? (Doc ID 1398860.1)
- Web系统性能调优常用技巧
- 串口 COM口 TTL RS-232 RS-485 区别 释疑
- Java网络编程总结
- gst-ffmpeg重编译出现的error记录
- 机器人最小能量最终结果(调试完成)
- oracle 软件下载地址、文档地址
- 手风琴 html+css+jquery
- Junit单元测试和spring单元测试
- √2 + √3 ≈ 3.14,这是巧合么?还是有其他意义呢?
- Rac数据库更换磁盘阵列
- Unknown type name "CGRect",did you mean "Rect"?
- Android取消EditText自动获取焦点
- cocospods 使用命令行介绍