找有这个题目的oj找的好辛苦

算法详见黑书119页

动态规划

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
struct toy
{int x;int y;int z;
}p[110];
//1代表x和y在上
//2代表x和z在上
//3代表y和z在上
int d[110][110][110][4];
int n,m;
//编号为1,2,,,,n
//d[i][a][b][k]表示已经堆出了i个堆,已经考虑了a个木块,顶上木块编号为b,且k面朝上之后还能获得的最大高度
void init()
{int i,j,k,l;for(i=0;i<=m+1;i++){for(j=0;j<=n+1;j++){for(k=0;k<=n+1;k++){for(l=0;l<=5;l++){d[i][j][k][l]=-1;}}}}
}
//编号为1,2,,,,n
//d[i][a][b][k]表示已经堆出了i个堆,已经考虑了a个木块,顶上木块编号为b,且k面朝上之后还能获得的最大高度
bool check(toy a,int k,int x,int y)
{int m,n;if(k==1){m=a.x;n=a.y;}if(k==2){m=a.x;n=a.z;}if(k==3){m=a.y;n=a.z;}if((x<=m&&y<=n)||(x<=n&&y<=m)){return true;}return false;
}
void found(int i,int a,int b,int k)
{//处理编号a+1的木块//新起一堆的处理if(a==n){d[i][a][b][k]=0;return;}if(i<m){if(d[i+1][a+1][a+1][1]==-1){found(i+1,a+1,a+1,1);}if(d[i][a][b][k]<d[i+1][a+1][a+1][1]+p[a+1].z){d[i][a][b][k]=d[i+1][a+1][a+1][1]+p[a+1].z;}if(d[i+1][a+1][a+1][2]==-1){found(i+1,a+1,a+1,2);}if(d[i][a][b][k]<d[i+1][a+1][a+1][2]+p[a+1].y){d[i][a][b][k]=d[i+1][a+1][a+1][2]+p[a+1].y;}if(d[i+1][a+1][a+1][3]==-1){found(i+1,a+1,a+1,3);}if(d[i][a][b][k]<d[i+1][a+1][a+1][3]+p[a+1].x){d[i][a][b][k]=d[i+1][a+1][a+1][3]+p[a+1].x;}}//加在当前堆if(check(p[b],k,p[a+1].x,p[a+1].y)){if(d[i][a+1][a+1][1]==-1)//check判断是否合法
        {found(i,a+1,a+1,1);}if(d[i][a][b][k]<d[i][a+1][a+1][1]+p[a+1].z){d[i][a][b][k]=d[i][a+1][a+1][1]+p[a+1].z;}}if(check(p[b],k,p[a+1].x,p[a+1].z)){if(d[i][a+1][a+1][2]==-1){found(i,a+1,a+1,2);}if(d[i][a][b][k]<d[i][a+1][a+1][2]+p[a+1].y){d[i][a][b][k]=d[i][a+1][a+1][2]+p[a+1].y;}}if(check(p[b],k,p[a+1].y,p[a+1].z)){if(d[i][a+1][a+1][3]==-1){found(i,a+1,a+1,3);}if(d[i][a][b][k]<d[i][a+1][a+1][3]+p[a+1].x){d[i][a][b][k]=d[i][a+1][a+1][3]+p[a+1].x;}}//弃置不用if(d[i][a+1][b][k]==-1){found(i,a+1,b,k);}if(d[i][a][b][k]<d[i][a+1][b][k]){d[i][a][b][k]=d[i][a+1][b][k];}
}
int main()
{scanf("%d %d",&n,&m);int i;for(i=1;i<=n;i++){scanf("%d %d %d",&p[i].x,&p[i].y,&p[i].z);}init();found(0,0,0,0);printf("%d\n",d[0][0][0][0]);return 0;
}

转载于:https://www.cnblogs.com/willzhang/archive/2012/08/03/2622287.html

ecnu1244 积木游戏相关推荐

  1. c语言幼儿园积木游戏,幼儿园《积木游戏》课件【三篇】

    [导语]课件制作本身就是作者综合素养的一种体现,它显现出制作者对教育.教学.教材改革方向的把握,对课堂教学的理解,对现代教育技术的领悟.因此教师在设计课件时一定要吃透教学内容,设计出符合教学的方案用于 ...

  2. 计算机积木游戏,乐高积木模拟器

    乐高积木模拟器是一款非常好玩的休闲小游戏,超好玩的拼积木游戏玩法,玩家需要将一个个积分方块拼接在一起,看似简单的玩法实则充满着挑战性,非常考验玩家的耐心.充分发挥自己的想象力,在这个游戏世界中玩耍,加 ...

  3. vijos 1464 积木游戏 DP

    描述 积木游戏 SERCOI 最近设计了一种积木游戏.每个游戏者有N块编号依次为1 ,2,-,N的长方 体积木.对于每块积木,它的三条不同的边分别称为"a边"."b边&q ...

  4. [NOI 1997] 积木游戏(dp)

    ·题目描述 一种积木游戏,游戏者有N块编号依次为1,2,-,N的长方体积木.第I块积木通过同一顶点三条边的长度分别为ai,bi,ci(i=1,2,-,N),如图1所示: 游戏规则如下: 1 从N块积木 ...

  5. #bzoj2240#积木游戏(DP? 贪心?)

    2240: 积木游戏 时间限制: 1 Sec  内存限制: 128 MB 题目描述 小时候我们都喜欢玩积木.这里的积木都是单位边长的正方体块,多个积木可以堆成一个"高木",&quo ...

  6. 积木游戏 (Standard IO)

    题意/Description: 在一个N*N的区域玩积木游戏,每个单元格正好跟积木的底面相等,每个单元格里放有若干个积木,Alice想重新摆放积木,使得每个单元格最多只能放一个积木,并且所有积木正好形 ...

  7. 华为机试真题 Python 实现【相同数字的积木游戏】【2022.11 Q4 新题】

    目录 题目 思路 考点 Code 题目 题目描述 小华和小薇一起通过玩积木游戏学习数学. 他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同. 小华随机拿一些积木挨着排成一排,请小薇找到 ...

  8. 算法提高 盾神与积木游戏

    算法提高 盾神与积木游戏   时间限制:1.0s   内存限制:256.0MB 问题描述 最近的m天盾神都去幼儿园陪小朋友们玩去了~ 每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们 ...

  9. 题目0171-相同数字的积木游戏1

    相同数字的积木游戏1 题目描述 小华和小薇一起通过玩积木游戏学习数学. 他们有很多积木,每个积木块上都有一个数字, 积木块上的数字可能相同. 小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相 ...

最新文章

  1. sqlsever无法重新启动计算机,安装SQL server 提示重新启动计算机失败怎么处理
  2. flink on yarn两种提交模式
  3. Eclipse4.2界面难看,启动速度,修改方法
  4. 日语学习-多邻国-人
  5. 辗转相除求最大公约数最小公倍数 扩展欧几里得算法
  6. 组合数学及其应用——polya计数
  7. 论文笔记之:Deep Reinforcement Learning with Double Q-learning
  8. Mysql启动报错:本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止
  9. php 字符串操作函数
  10. Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichSpout
  11. 最新摸头GIF在线生成工具源码+实测可用
  12. 环评图件制作业务承接(生态影响评价)
  13. jQuery百家姓验证
  14. [从零学习汇编语言] - 计算机发展历史
  15. Python贝叶斯决策面计算及仿真
  16. Vue使用Element UI插件
  17. Python+AI智能编辑人脸
  18. Outlook客户端解析Html类型邮件样式问题
  19. 关于广告投放需要懂的几个关键词(DAU,DNU等等)
  20. 聚氯乙烯增韧改性研究新进展

热门文章

  1. 高人,不断地在营销, 有收入就是高人
  2. 现在最简单的赚钱套路
  3. sort()与cmp()
  4. 联通突然从4g变成3g了_老人机真不能用了?!联通逐渐关闭2G、3G信号服务
  5. sql as关键字_SQL AS关键字概述和示例
  6. Docker默认存储路径修改
  7. mysql 聚集函数 count 使用详解(转载)
  8. Spring中实现自定义事件
  9. WordPress添加评论回复的电子邮件警报通知
  10. PHP try catch用法