sohu

 union和struct区别
对空间的利用不同。前者不同属性用不同空间.后者不同属性用同一空间。后者一般用在一个变量有两种不共存的属性。比如有个有个结构体是人,男朋友名字可以和女朋友名字可以用一个union表示。主要目的还是节省空间。

堆栈的实现
使用单链表实现,通过在表顶端插入来实现Push,通过删除表顶端元素实现Pop。

 
声明指向数组的指针
int (*p)[10];
全排列算法:
递归思想如下(这里把集合R中n个数的全排列记为p(R)):
当n=1时,排列 p(R) 只有一个元素,当然只有一种方法,当 n>1 时,首先给出以下定义:设 R={r(1),r(2),r(3),r(4)…,r(n)} 为要进行排列的n个元素,R(i)=R-{r(i)} 为去掉r(i) 剩下的元素序列,集合R中所有元素的全排列记为p(R),r(i)p(X)表示在全排列p(X)的每一个排列前加上前缀r(i)得到的全排列, 所以p(R)由r(1)p(R(1)),r(2)p(R(2)),r(3)p(R(3)),r(4)p(R(4)),…,r(n)p(R(n))组成,递归算法如下:

通过调用permute (a, 0)来引发过程
(1) 假设rand8()只生存[0,7]间的任意实数且属于均匀概率分布,则如何实现一个随机函数rand11()生成0-10之间的任意实数也属于均匀概率分布? rand11() = (10.0*rand8()) / (7.0);
(2) 假设rand8()只生存[0,7]间的任意整数且属于均匀概率分布,则如何实现一个随机函数rand11()生成0-10之间的任意整数也属于均匀概率分布?
rand8()只产生0,1,2..7这8个数,如何将其放大到0,1,2..10这11个数。在这里我们可以考虑使用笛卡尔乘积的方法(这里用**表 示)。则rand8() ** rand8()一共可一产生64种编码结果,且是等概率的(属于均匀概率分布)。从这64种结果中预先随机选取11种情况分别映射为 0,1,2,…,10这11个整数。然后定义rand11() 如下: 若rand8() ** rand*() 产生的编码为预先选取的,则返回其相应的映射值,否则重新执行rand8()**rand8()直至生产为预先选取的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值