摘要:蒙特卡罗算法是我在算法学习中最喜欢的算法之一,不知道什么原因,就是很欣赏,那种感觉就像你喜欢在雨中散步一样,没有什么能给你的,但是你享受到雨中的浪漫或者优雅。我一直觉得,像蒙特卡罗和拉斯维加斯这样的算法,在解决一些近视计算问题上,能提供给程序员很快捷和巧妙的方法。下面给出用蒙特卡洛计算圆周率的程序,很简单,但是,要说明的是它的并行算法,看《蒙特卡罗算法并行计算》#include#include#include#includeusing namespace std;#define pear 50000//扔的“黄豆”数目int isInCir(double x,double y){if ((x*
阅读全文
随笔分类 - 算法
摘要:计算机中,硬件和软件其实是相辅相成的,软件可以降低硬件成本,硬件可以提高速度;这个道理是硬件加速器的存在价值。而在我们的模拟环境中,完全可以用软件模拟一些可以模拟的硬件条件,比如38译码器。//////////////////////////////////////////////////////////////////////////#includeusing namespace std;int main(){char yes = 'Y';do{int a=0,b=0,c = 0;printf("input a,b,c\n");while (1){scan
阅读全文
摘要:#include#define len 3#define max 1000using namespace std;int isSXH(int d){//d>0int temp = d;int i = 0;int darr[len] = {0};do{darr[i] = d;i++;//darr[i] =d;d /=10;}while(d != 0);int add = 0;for (i = 0;i{add += darr[i]*darr[i]*darr[i];}if (temp == add){return 1;}return 0;//不是水仙花数返回0;}int main(){//co
阅读全文
摘要:对于求n 个实数构成的数组中最小元素的位置问题,写出你设计的具有减治思想算法的伪代码,确定其时间效率,并与该问题的蛮力算法相比较。#include#include#define len 10using namespace std;void creatArr(int arr[len])8{srand(time(NULL));for (int i=0;i{arr[i] = rand()%len;}}void printArr(int arr[len]){cout<<"数组为:"<<endl;for (int i=0;i{cout<<arr[i
阅读全文
摘要:游戏:有3个门,门后分别是car,sheep,只有一个门是car。一个猜想着随即选取一个门,如果这个门后面是车就可以获得车,否则获得羊。很显然这样猜对车的概率是1/3。但是现在的条件是有个主持人,她知道每个门后面是什么。当你选择一个门之后,她打开一个有羊的门。问你是否改变你原来的选择?坚持原来的选择的话获得车的概率是多少,改变原来的选择的话概率又为多少。请给出解释。答案是1/3变成2/3。概率能解释;编程更直观。
阅读全文
摘要:待证问题:二进制循环左移算法求约瑟夫问题的证明:分析:f{1,2,..k}表示k 个人1..k,从begin 序号开始向后杀,最后留下的那个人的号码f{1,2,..k};eg:f{1,2,3}表示{1,2,3}这3 个人,从1 开始,经过两轮轮杀掉其他人,剩下3.即f{1,2,3}=3;易得: {1,2,3,4}4 个人从1 开始第一被杀的人肯定是2,所以剩下{1,3,4}这个状态时刻,第一个有权利杀人的人(即begin)是3,所以对{3,4,1}进行f{1,3,4}。显然,这是一个可以递归的过程。把4->1 看成是连续的数(1=5%4)即{3,4,5%4}因此:3 个人, f{1,2,
阅读全文