- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七届蓝桥杯省赛B组试题
(1)
煤球数目
有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
....
如果一共有100层,共有多少个煤球?
题解:纯粹的数学题而已
int a[101] ={0};
for(int i = 1 ; i 101 ; i ++)
a[i] = a[i-1] + i;
int ans = 0;
for(int j = 1 ; j 101 ; j ++)
ans += a[j];
printf(%d\n,ans);
(2)
生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
题解:暴力枚举。
第一重循环枚举刚开始过生日时候的岁数。
第二重循环是枚举现在的岁数
第三重循环就是将刚开始过生日的岁数和现在的岁数加起来。
int start,end;
for(start = 1 ; start 236 ; start ++)
{
for( end = start ; end 236 ; end ++ )
{
int sum = 0;
for(int i = start; i = end; i ++)
sum += i;
if( sum == 236)
printf(start : %d end : %d\n,start,end);
}
}
(3)
B DEF
A + — + —— = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法? //29
题解:DFS+回溯
由于计算机中5/2会等于2,而且如果打算采用精度方面的处理的话,会很麻烦,而且很容易错。
所以,把这些式子全部变成乘法形式就好了。
A*C*GHI+B*GHI+DEF*C=10*C*GHI
代码:
int visit[10],num[10];
int sum=0;
void dfs(int n)
{
if(n==10)
{
int b=num[7]*100+num[8]*10+num[9]; //GHI
int a=num[4]*100+num[5]*10+num[6]; //DEF
//coutb a num[1] num[2] num[3]endl;
if(num[1]*num[3]*b+num[2]*b+num[3]*a==10*num[3]*b) sum++;
//cout*endl;
return ;
}
for(int i=1;i=9;++i)
{
if(!visit[i])
{
visit[i]=1;
num[n]=i;
dfs(n+1);
visit[i]=0;
num[n]=0;
}
}
}
int main()
{
memset(num,0,sizeof(num));
memset(visit,0,sizeof(visit));
dfs(1);
coutsum;
return 0;
}
(4)
快速排序
排序在各种场合经常被用到。
快速排序是十分常用的高效率的算法。
其思想是:先选一个“标尺”,
用它把整个队列过一遍筛子,
以保证:其左边的元素都不大于它,其右边的元素都不小于它。
这样,排序问题就被分割为两个子区间。
再分别对子区间排序就可以了。
这样,排序问题就被分割为两个子区间。
再分别对子区间排序就可以了。
下面的代码是一种实现,请分析并填写划线部分缺少的代码。
#include stdio.h
void swap(int a[], int i, int j)
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}
int partition(in
文档评论(0)