95,88,71,61,50,()
95 - 9 - 5 = 81
88 - 8 - 8 = 72
71 - 7 - 1 = 63
61 - 6 - 1 = 54
50 - 5 - 0 = 45
40 - 4 - 0 = 36
1,2,3.。。10球放入1,2,。。。。10个盒子里,恰好3个球与盒子标识不等,这样的方法有几种?
从标号为1,2,…,10的10个球中选出7个放到相应标号的盒中有10C7种,则剩下3个球的标号放在与其所在盒子的标号不一致的盒中、不妨设为1,2,3号球,则1,2,3号盒中所放球为2,3,1;3,1,2两种,共10C7*2种。
1,2,3,4,5组成的无重复数字的五位数中,大于23145且小于43521的共有几个?
全部有5!=120个小于23145的有21xxx(3!=6个,1xxxx=4!=24个) 大于43521的有44xxx,45xxx,5xxxx,6+6+24=36个 120-24-36=60个,再去掉23145和43521自己,所以是58个。
一次考试中,第一次大于等于80分的人数占70%,第二次75%,第三次85%,第四次90%,问四次考试中都80分的至少占?%
100-(100-70)-(100-75)-(100-85)-(100-90)=20(人)
7人中派4人发言,甲乙至少一人参加,如果同时参加,不能相邻,那么问不同的发言顺序有几种?
总的排法 - 没有甲乙的 - 甲乙同时参加且相邻的A7取4 - A5取4 -(C5取2 ×A2取2 × A3取3)
=840 - 120 - 120
=600
实现二叉树每一个节点的左右子节点相互调换?
Status BiTree_Revolute(BiTree T)//左右子树交换
{
if(!T) return OK;
BitNode *temp;
if(T->lchild!=NULL&&T->rchild!=NULL)
{
temp=T->lchild;
T->lchild=T->rchild;
T->rchild=temp;
}
BiTree_Revolute(T->lchild);
BiTree_Revolute(T->rchild);
return OK;
}
一个台阶一共n级,一次可跳1级,也可跳2级,编程实现计算共有几种方法?并分析算法的时间复杂度
首先我们考虑最简单的情况:如果只有1 级台阶,那显然只有一种跳法,如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级;另外一种就是一次跳2 级。
现在我们再来讨论一般情况:我们把n 级台阶时的跳法看成是n 的函数,记为f(n)。当n>2 时,第一次跳的时候就有两种不同的选择:一是第一次只跳1 级,此时跳法数目等于后面剩下的n-1 级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳2 级,此时跳法数目等于后面剩下的n-2 级台阶的跳法数目,即为f(n-2)。
因此n 级台阶时的不同跳法的总数f(n) = f(n-1) + f(n-2)。
我们把上面的分析用一个公式总结如下:
/ 1 (n=1)
f(n) = 2 (n=2)
\ f(n-1) + (f-2) (n>2)
分析到这里,相信很多人都能看出这就是我们熟悉的Fibonacci 序列。
参考代码:
[cpp]
/*----------------------------
Copyright by yuucyf. 2011.08.16
-----------------------------*/
#include "stdafx.h"
#include <iostream>
using namespace std;
int JumpStep(int n)
{
if (n <= 0) return 0;
if (n == 1 || n == 2) return n;
return (JumpStep(n-1) + JumpStep(n-2));
}
int _tmain(int argc, _TCHAR* argv[])
{
int nStep = 0;
cout << "请输入台阶数:";
cin >> nStep;
cout << "台阶数为" << nStep << ",那么总共有" << JumpStep(nStep) << "种跳法." << endl;
return 0;
}
设工厂甲和工厂乙次品率为1%和2%,现在从工厂甲和乙中分别占60%和40%的一批产品里随机抽取一件,发现是次品,求该次品是由工厂甲生产的概率?
利用贝叶斯公式得P=(0.6*0.01)/(0.6*0.01+0.4*0.02)=3/7