Chapter6: question 43 - 45
43. 投 n 个骰子,计算点数和出现的概率
递归求解:(空间 O(5*n+1),时间 O(6n))
void count(int N, int curN, int sum, int record[])
{
if(curN == 0){ ++record[sum - N]; return;}
for(int i = 1; i <= 6; ++i)
count(N, curN-1, sum+i, record);
}
void occursNumber(int N, int record[])
{
if(N < 1) return;
count(N, N, 0, record);
}
非递归求解:(空间 O(12*n + 2),时间 O(6*n2))
#include <iostream>
#include <cstring>
using namespace std;
void occursNumber(unsigned N, unsigned record[])
{
if(N < 1) return;
unsigned *tem = new unsigned[6*N +1];
memset(tem, 0, (6*N+1)*sizeof(unsigned));
bool flag = 1;
for(int i = 1; i <= 6; ++i)
tem[i] = 1; for(int k = 2; k <= N; ++k)
{
if(flag)
{
for(int i = 0; i < k; ++i)
record[i] = 0;
for(int i = k; i <= 6*k; ++i)
{
record[i] = 0;
for(int j = 1;j <= i && j <= 6; ++j)
record[i] += tem[i-j];
}
}
else
{
for(int i = 0; i < k; ++i)
tem[i] = 0;
for(int i = k; i <= 6*k; ++i)
{
tem[i] = 0;
for(int j = 1; j <= i && j <= 6; ++j)
tem[i] += record[i-j];
}
}
flag ^= 1;
}
if(N & 1)
{
for(int i = N; i <= 6*N; ++i)
record[i] = tem[i];
}
delete[] tem;
}
unsigned long long pow(unsigned exponent)
{
if(exponent < 1) return 0;
unsigned long long result = 6;
unsigned long long tem = 1;
while(exponent != 1)
{
if(exponent & 1) tem *= result;
result *= result;
exponent >>= 1;
}
result *= tem;
return result;
}
int main(){
unsigned N, S;
unsigned long long total;
cout << "input the number of dice: N " << endl << "cin >> ";
cin >> N;
total = pow(N);
cout << "the total of all number occurs is : " << total << endl;
cout << "=============================" << endl;
cout << "input the Sum [N, 6N]" << endl;
unsigned *record = new unsigned[6*N + 1];
memset(record, 0, (6*N+1)*sizeof(unsigned));
occursNumber(N, record);
while(true)
{
cout << "cin >> ";
cin >> S;
if(S >= N && S <= 6*N)
cout << record[S] << endl;
if(getchar() == 'q') break;
}
delete[] record; return 0;
}

44. 取 k 张扑克牌,看其是否是顺子。
大小王用 0 表示,可以看成任意数字。
bool isContinuous(int data[], int length)
{
if(data == NULL || length < 1) return false; qsort(data, length, sizeof(int), cmp);
int i;
int num0 = 0, numGap = 0;
for(i = 0; data[i] == 0 && i < length; ++i)
++num0;
for(; i < length-1; ++i)
{
if(data[i] == data[i+1]) return false;
numGap += data[i+1] - data[i] - 1;
}
return (numGap <= num0 ? true : false);
}
int cmp(const void *arg1, const void* arg2)
{
return *((int*)arg1) > *((int*)arg2);
}
45. 圆圈中最后剩下的数字。
GO:约瑟夫问题

Chapter6: question 43 - 45的更多相关文章
- 1Z0-050
QUESTION 13 View the Exhibit.Examine the following command that is executed for the TRANSPORT table ...
- OCJP(1Z0-851) 模拟题分析(二)over
Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有 ...
- 雅虎公司C#笔试题及参考答案
Question 1. (单选) 在计算机网络中,表征数据传输可靠性的指标是——21. 传输率2. 误码率3. 信息容量4. 频带利用率Question 2. (单选) 以下关于链式存储结构的叙述中哪 ...
- 【Java】-NO.20.Exam.1.Java.1.001- 【1z0-807】- OCEA
1.0.0 Summary Tittle:[Java]-NO.20.Exam.1.Java.1.001-[1z0-807] Style:EBook Series:Java Since:2017-10- ...
- echarts的学习
博客1.:https://zrysmt.github.io/ 博客2:http://blog.csdn.net/future_todo/article/details/60956942 工作中一个需求 ...
- Fibonacci number
https://github.com/Premiumlab/Python-for-Algorithms--Data-Structures--and-Interviews/blob/master/Moc ...
- Exam E05-001 Information Storage and Management Version 3 Exam
Emc 考试 e05-001信息存储和管理版本3考试 [总问题:171] 哪种 emc 产品提供软件定义的存储基础架构的自动监视和报告? A. viprSrmB. 斯纳普内C. 阿瓦马尔D. 快速副总 ...
- Long-distance navigation and magnetoreception in migratory animals(迁徙动物中的长距离导航和磁感应)
摘要:For centuries, humans have been fascinated by how migratory animals find their way over thousands ...
- Java试题二
QUESTION 37Given:1. class Super {2. private int a;3. protected Super(int a) { this.a = a; }4. } ...1 ...
随机推荐
- Visual Studio 拓展插件——Image Optimizer
一句话概括效用:在Visual Studio的解决方案中,为图片或包含图片的文件夹添加右键菜单,可对图片进行压缩,无损压缩. 在VS扩展工具中安装 安装好后在VS资源管理器中选择图片右键,在右键菜单中 ...
- Hibernate 检索策略
概述 检索数据时的 2 个问题: –不浪费内存:当 Hibernate 从数据库中加载 Customer 对象时, 如果同时加载所有关联的 Order 对象, 而程序实际上仅仅需要访问 Custome ...
- SharePoint\O365 "See also"功能 and site feature 激活\禁用小节
博客地址:http://blog.csdn.net/FoxDave 最近因为问题发现了SharePoint的"See also"功能,该功能是由SharePoint自动的Feat ...
- 关于relative和absolute的总结
对于定位这个性质我原理上来说自己是明白的,但是在实践的过程中,总会出现各种稀奇古怪的情况,加relative或是absolute就可以解决,但是遇到这些情况总是不明白为什么!!!难道是脑容量太小的原因 ...
- 1、JS的数据类型
一.分类:JS有6种数据类型: 1.string 2.undefined 3.number 4.null 5.boolean 6.object(包含函数.数组.日期等) 二.隐式转换 1.+和- va ...
- php7+apache2.4 (Windows7下),成功启动。(楼主另外提供了1个php7集成环境打包: http://pan.baidu.com/s/1qXwjpF2 ,如果你只是想了解一下,放在d盘根目录。)
php7正式版已经发布,性能是php5.4的2倍.博主入手php7 新鲜了一把,下面是解决问题之后成功启动php7的记录. ( 电脑必须win7 sp1, .netframework4 ) Windo ...
- lsof 解决无法删除文件夹问题
今天在HPCC上面想要删除一个文件夹,结果说“Device or resource busy". 于是google一下,发现这个是因为有程序正在运行,所以无法删除. 那么怎样解决? lso ...
- /proc/uptime详解
From:http://smilejay.com/2012/05/proc_uptime/ 在Linux中,我们常常会使用到uptime命令去看看系统的运行时间,它与一个文件有关,就是/proc/up ...
- 移动互联网实战--资源类APP的数据存储处理和优化
前言: 对于资源类的APP, 其音频/图形占据了APP本身很大的比例. 如何存储和管理这些资源文件, 成了一个颇具挑战性的难点. 移动端的碎片化, 高中低端手机的并存, 需要开发者不光是具备基础的存储 ...
- Codeforces Round #378 (Div. 2) A B C D 施工中
A. Grasshopper And the String time limit per test 1 second memory limit per test 256 megabytes input ...