《蓝桥杯软件大赛培训总结》由会员分享,可在线阅读,更多相关《蓝桥杯软件大赛培训总结(5页珍藏版)》请在人人文库 上搜索。
1、蓝桥杯软件大赛培训总结“蓝桥杯”软件大赛培训总结 一、n个数中取m个数 问题: 1.加油站问题(如7个加油站,分别取6个、5个、4个、3个、2个、1个)。 2.烽火台问题。 js11.c 3.砝码问题。 gzys10_2.c 函数代码: void Find_Nums(int n,int m) int s,i; num=(int *)malloc(sizeof(int)*m); num0=-1;s=0; while(s!=-1) if(s!=m-1)/取小于M个数 nums+; if(numsn-m+s) s-;/回朔 else s+; nums=nums-1; else/取第M个数 nums+。
2、; for(i=1;i printf( printf( if(nums=n-m+s) s-;/回朔 二、n个数中任意组合(可以选中1n,但数量只能为1) 问题: 1.逻辑问题(只能选0,1)。 louji.c 2.加油站问题(只能选0,1)。 digui.c 3.砝码问题(能选-1,0,1)。 gzys10_1.c 函数代码: void show(int *x) /打印结果 int judge(int *x) /判断函数 void f(int *x, int n) if(n=10) if(judge(x)show(x); return; xn=0; f(x,n+1); xn=1; f(x,n+。
3、1); xn=2; f(x,n+1); 三、n个数中任意组合(可以选中1n,但数量不知l if (cost1000 | m /not choose m -countm; cost -= pricem; fun(m-1); 四、取球问题 1. 在一个黑袋中共有m个白球和n个黑球( m,n0),袋外还有一些白球。每次随机从袋中取出两球,若取出的球颜色相同,则放回一白球;若取出两球颜色不同,则放回一黑球,直到取完(取出最后两球不放回) js9.c。 核心代码: void total_num(int m,int n) if(m+n)=2) sum+; if(m=0 if(n=2) total_num(。
4、m+1,n-2); if(m=2) total_num(m-1,n); 2. 某个袋子中有红球m个,白球n个。现在要从中取出x个球。那么红球数目多于白球的概率是多少呢下面的代码解决了这个问题。其中的y表示红球至少出现的次数。 /* m: 袋中红球的数目 n: 袋中白球的数目 x: 需要取出的数目 y: 红球至少出现的次数 */ double pro(int m, int n, int x, int y) if(yx) return 0; if(y=0) return 1; if(ym) return 0; if(x-ny) return 1; double p1 = pro(m-1,n,x。
5、-1,y-1)+pro(m-1,n,x,y); double p2 = pro(m,n-1,x-1,y)+pro(m,n-1,x,y); return (double)m/(m+n) * p1 + (double)n/(m+n) * p2; 3. 口袋中有5只红球,4只白球。随机从口袋中取出3个球,则取出1个红球2个白球的概率是多大似这样的数学问题,在计算的时候往往十分复杂。但如果通过计算机模拟这个过程,比如进行100000次取球模拟,统计一下指定情况出现的次数对计算机来说是方便且快速的。 srand( (unsigned)time( NULL ) ); int n = 0; for(in。
6、t i=0; i printf(概率=%fn4. 计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是组合数学的研究领域。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。请完善它。 int f(int m, int n) if(m=0 | n=0) return 1; return f(m-1,n)+f(n,m-1); 5. 公交车票价为5角。假设每位乘客只持有两种币值的货币:5角、1元。再假设持有5角的乘客有m人,持有1元的乘客有n人。由于特殊情况,开始的时候,售票员没有零钱可找。我。
7、们想知道这m+n名乘客以什么样的顺序购票则可以顺利完成购票过程。显然,m =n的时候,有些情况也不行。比如,第一个购票的乘客就持有1元。下面的程序计算出这m+n名乘客所有可能顺利完成购票的不同情况的组合数目。注意:只关心5角和1元交替出现的次序的不同排列,持有同样币值的两名乘客交换位置并不算做一种新的情况来计数。 /m: 持有5角币的人数 /n: 持有1元币的人数 /返回:所有顺利完成购票过程的购票次序的种类数 int f(int m, int n) if(m return f(m-1,n)+f(m,n-1); 五、穷举发 1. 逻辑问题。 2. 兵乓球队选手对阵问题c5-2-1.c。 3. 砝码问题gzys10.cpp。 六、技能型题目。
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34708 人正在系统学习中 相关资源:经典刻录软件尼禄Nero6.6.1.4中文安装版及序列 -其它工具类资源…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!