zstu 4214 高楼扔鸡蛋(google 面试题)dp
input
T 1<=T<=10000
n m 1<=n<=2000000007 1<=m<=32
output
m个鸡蛋从1到n哪一楼x扔下去刚好没碎,而再x+1楼扔下去就碎了,求最少扔的次数无论x为1到n的哪个数都能确定x
如果x>32,输出Impossible,否则输出x
做法:dp,d(x,y)=d(x,y-1)+d(x-1,y-1),x:egg,y:floor求出下限,即x个鸡蛋至少要试多少次
# include <stdio.h>
# include <limits.h>
#define INF 2000000010
int max(int a, int b) { return (a > b)? a: b; }
int eggFloor[][];
int eggDrop(int n, int k)
{
/* eggFloor[i][j] 表示对于 i个鸡蛋 j 层楼,需要的最少测试次数 */
int res;
int i, j, x;
// 初始化
for (i = ; i <= n; i++)
{
eggFloor[i][] = ;
eggFloor[i][] = ;
} //只有一个鸡蛋,没得优化,需要j次
for (j = ; j <= k; j++)
eggFloor[][j] = j; // 最优子结构的递推
for (i = ; i <= n; i++)
{
for (j = ; j <= k; j++)
{
eggFloor[i][j] = INT_MAX;
for (x = ; x <= j; x++)
{
res = + max(eggFloor[i-][x-], eggFloor[i][j-x]);
if (res < eggFloor[i][j])
eggFloor[i][j] = res;
}
}
}
}
int a[][][];
int init()
{
for(int i=;i<=;i++) { a[][i][]=a[][i][]=;a[][i][]=a[][i][]=; }
for(int j=;j<=;j++) a[][][j]=a[][][j]=j;
for(int i=;i<=;i++)//egg
{
for(int j=;j<=;j++)//floor
{
a[][i][j]=a[][i][j-]+;
a[][i][j]=a[][i][j]+a[][i-][j-];
if(a[][i][j]<) a[][i][j]=INF;
if(a[][i][j]<) a[][i][j]=INF;
}
}
for(int i=;i<=;i++,printf("\n"))
for(int j=;j<=;j++)
printf("%2d,%2d ",a[][i][j],a[][i][j]);
}
int b[][];
int init1()
{
for(int i=;i<=;i++) { b[i][]=;b[i][]=; }
for(int j=;j<=;j++) b[][j]=j;
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
b[i][j]=+b[i][j-]+b[i-][j-];
if(b[i][j]<) b[i][j]=INF;
}
}
/* for(int i=1;i<=33;i++,printf("\n"))
for(int j=1;j<=33;j++)
printf("%d ",b[i][j]);*/
}
/* 测试*/
int main()
{
// freopen("out","w",stdout);
// init();
init1();
int n,k,i,T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
for(i=;i<=;i++) if(n<=b[k][i]) break;
i<=?printf("%d\n",i):puts("Impossible");
}
return ;
eggDrop(n,k);
for(int i=;i<=n;i++)//egg
{
for(int j=;j<=k;j++) printf("%2d ",eggFloor[i][j]);
printf("\n");
}
return ;
}
zstu 4214 高楼扔鸡蛋(google 面试题)dp的更多相关文章
- Google面试题-高楼扔鸡蛋问题
本文由 @lonelyrains 出品.转载请注明出处. 文章链接: http://blog.csdn.net/lonelyrains/article/details/46428569 高楼扔鸡蛋问 ...
- 高楼扔鸡蛋问题(鹰蛋问题) POJ-3783
这是一道经典的DP模板题. https://vjudge.net/problem/POJ-3783#author=Herlo 一开始也是不知道咋写,尝试找了很多博客,感觉有点领悟之后写下自己的理解. ...
- Google 面试题和详解
Google的面试题在刁钻古怪方面相当出名,甚至已经有些被神化的味道.这个话题已经探讨过很多次,而科技博客 BusinessInsider这两天先是贴出15道Google面试题并一一给出了答案,其中不 ...
- Google面试题之100层仍两个棋子
一道Google面试题,题目如下:"有一个100层高的大厦,你手中有两个相同的玻璃围棋子.从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层 ...
- 数组中第K小的数字(Google面试题)
http://ac.jobdu.com/problem.php?pid=1534 题目1534:数组中第K小的数字 时间限制:2 秒 内存限制:128 兆 特殊判题:否 提交:1120 解决:208 ...
- Google 面试题:Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java
Google面试题 股市上一个股票的价格从开市开始是不停的变化的,需要开发一个系统,给定一个股票,它能实时显示从开市到当前时间的这个股票的价格的中位数(中值). SOLUTION 1: 1.维持两个h ...
- [CareerCup] 6.5 Drop Eggs 扔鸡蛋问题
6.5 There is a building of 100 floors. If an egg drops from the Nth floor or above, it will break. I ...
- Google面试题:计算从1到n的正数中1出现的次数
题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次. 找工作,准备看写题目,题目说是Goo ...
- Careercup - Google面试题 - 5732809947742208
2014-05-03 22:10 题目链接 原题: Given a dictionary, and a list of letters ( or consider as a string), find ...
随机推荐
- Go - Revel框架介绍
Go - Revel框架介绍 https://github.com/robfig/revel http://robfig.github.io/revel/ web框架:revel 数据库:mongod ...
- VC++实现小托盘的处理
// 实验一Dlg.cpp : implementation file // #include "stdafx.h" #include "实验一.h" #inc ...
- DotNet加密方式解析--对称加密
离过年又近了一天,回家已是近在咫尺,有人欢喜有人愁,因为过几天就得经历每年一度的装逼大戏,亲戚朋友加同学的各方显摆,所以得靠一剂年终奖来装饰一个安稳的年,在这里我想起了一个题目“论装逼的技术性和重要性 ...
- CentOS 安装 Mogodb(在线 && 离线)
平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html 先说推荐安装:在线安装,跟着官方走可以避免一些问题 新学Mon ...
- C#中的集合类——HashTable
HashTable 被称为键值对集合,类似于字典,根据key可以找到value 键值对对象[键]=值;键值对集合当中,键必须是唯一的,而值是可以重复的 1. HashTable的用法 //创建了一个键 ...
- [ios2]iOS 使用subversion管理iOS源代码 【转】
使用subversion管理iOS源代码 1.安装和配置subversion服务器 在windows 服务器上安装VisualSVN-Server,下载地址http://www.visualsvn.c ...
- 在收购Sun六年后,Oracle终于瞄准了Java的非付费用户
Java语言毫无疑问已经成为软件社区的一个品牌和开放的产业标准.自从2010年Oracle收购了Sun Microsystems公司之后,很多人就担心这在某种程度上是软件开源产业的一次失败,甚至会造成 ...
- C++程序设计与语言(特别版) -- 导论
前言 刚开始的时候只学习了一些简单的C++语法知识,当C++不再是一门学科需要考试的时候,就想重新把C++捡回来,希望从中学习到一点思想性的东西而不再是一些语法性的东西. 下面都是一些参考书目的摘抄或 ...
- Debian 8 安装BtSync
声明,此方法是Btsync的官网resilio提供的方法 传送门:https://help.getsync.com/hc/en-us/articles/206178924 第一,在如下文件中添加: 1 ...
- angular 格式化日期
参考:http://blog.csdn.net/zk437092645/article/details/37882191 html: <input type="text" d ...