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的更多相关文章

  1. 1Z0-050

    QUESTION 13 View the Exhibit.Examine the following command that is executed for the TRANSPORT table ...

  2. OCJP(1Z0-851) 模拟题分析(二)over

    Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有 ...

  3. 雅虎公司C#笔试题及参考答案

    Question 1. (单选) 在计算机网络中,表征数据传输可靠性的指标是——21. 传输率2. 误码率3. 信息容量4. 频带利用率Question 2. (单选) 以下关于链式存储结构的叙述中哪 ...

  4. 【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- ...

  5. echarts的学习

    博客1.:https://zrysmt.github.io/ 博客2:http://blog.csdn.net/future_todo/article/details/60956942 工作中一个需求 ...

  6. Fibonacci number

    https://github.com/Premiumlab/Python-for-Algorithms--Data-Structures--and-Interviews/blob/master/Moc ...

  7. Exam E05-001 Information Storage and Management Version 3 Exam

    Emc 考试 e05-001信息存储和管理版本3考试 [总问题:171] 哪种 emc 产品提供软件定义的存储基础架构的自动监视和报告? A. viprSrmB. 斯纳普内C. 阿瓦马尔D. 快速副总 ...

  8. Long-distance navigation and magnetoreception in migratory animals(迁徙动物中的长距离导航和磁感应)

    摘要:For centuries, humans have been fascinated by how migratory animals find their way over thousands ...

  9. Java试题二

    QUESTION 37Given:1. class Super {2. private int a;3. protected Super(int a) { this.a = a; }4. } ...1 ...

随机推荐

  1. Visual Studio 拓展插件——Image Optimizer

    一句话概括效用:在Visual Studio的解决方案中,为图片或包含图片的文件夹添加右键菜单,可对图片进行压缩,无损压缩. 在VS扩展工具中安装 安装好后在VS资源管理器中选择图片右键,在右键菜单中 ...

  2. Hibernate 检索策略

    概述 检索数据时的 2 个问题: –不浪费内存:当 Hibernate 从数据库中加载 Customer 对象时, 如果同时加载所有关联的 Order 对象, 而程序实际上仅仅需要访问 Custome ...

  3. SharePoint\O365 "See also"功能 and site feature 激活\禁用小节

    博客地址:http://blog.csdn.net/FoxDave 最近因为问题发现了SharePoint的"See also"功能,该功能是由SharePoint自动的Feat ...

  4. 关于relative和absolute的总结

    对于定位这个性质我原理上来说自己是明白的,但是在实践的过程中,总会出现各种稀奇古怪的情况,加relative或是absolute就可以解决,但是遇到这些情况总是不明白为什么!!!难道是脑容量太小的原因 ...

  5. 1、JS的数据类型

    一.分类:JS有6种数据类型: 1.string 2.undefined 3.number 4.null 5.boolean 6.object(包含函数.数组.日期等) 二.隐式转换 1.+和- va ...

  6. php7+apache2.4 (Windows7下),成功启动。(楼主另外提供了1个php7集成环境打包: http://pan.baidu.com/s/1qXwjpF2 ,如果你只是想了解一下,放在d盘根目录。)

    php7正式版已经发布,性能是php5.4的2倍.博主入手php7 新鲜了一把,下面是解决问题之后成功启动php7的记录. ( 电脑必须win7 sp1, .netframework4 ) Windo ...

  7. lsof 解决无法删除文件夹问题

    今天在HPCC上面想要删除一个文件夹,结果说“Device or  resource busy". 于是google一下,发现这个是因为有程序正在运行,所以无法删除. 那么怎样解决? lso ...

  8. /proc/uptime详解

    From:http://smilejay.com/2012/05/proc_uptime/ 在Linux中,我们常常会使用到uptime命令去看看系统的运行时间,它与一个文件有关,就是/proc/up ...

  9. 移动互联网实战--资源类APP的数据存储处理和优化

    前言: 对于资源类的APP, 其音频/图形占据了APP本身很大的比例. 如何存储和管理这些资源文件, 成了一个颇具挑战性的难点. 移动端的碎片化, 高中低端手机的并存, 需要开发者不光是具备基础的存储 ...

  10. 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 ...