蓝桥杯cc++省赛试题及答案解析Word格式.docx
- 文档编号:13856289
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:25
- 大小:58.32KB
蓝桥杯cc++省赛试题及答案解析Word格式.docx
《蓝桥杯cc++省赛试题及答案解析Word格式.docx》由会员分享,可在线阅读,更多相关《蓝桥杯cc++省赛试题及答案解析Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
intans=0;
for(intj=1;
j<
j++)
ans+=a[j];
printf("
%d\n"
ans);
return0;
}
第二题
生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
26
intstart,end;
for(start=1;
start<
236;
start++)
{
for(end=start;
end<
end++)
intsum=0;
for(inti=start;
=end;
sum+=i;
if(sum==236)
start:
%dend:
%d\n"
start,end);
}
第三题
凑算式
BDEF
A+---+-------=10
CGHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714就是一种解法,
5+3/1+972/486是另一种解法。
这个算式一共有多少种解法?
你提交应该是个整数,不要填写任何多余的内容或说明性文字。
29
intans=0;
intnum[10];
boolvisit[10];
voidSolve()
doublesum=num[0]+(double)num[1]/num[2]+(double)(num[3]*100+num[4]*10+num[5])/(num[6]*100+num[7]*10+num[8]);
if(sum==10)
ans++;
voiddfs(intindex)
if(index==9)
Solve();
return;
10;
if(!
visit[i])
visit[i]=true;
num[index]=i;
dfs(index+1);
visit[i]=false;
dfs(0);
}
第四题
快速排序
排序在各种场合经常被用到。
快速排序是十分常用的高效率的算法。
其思想是:
先选一个“标尺”,
用它把整个队列过一遍筛子,
以保证:
其左边的元素都不大于它,其右边的元素都不小于它。
这样,排序问题就被分割为两个子区间。
再分别对子区间排序就可以了。
下面的代码是一种实现,请分析并填写划线部分缺少的代码。
#include<
voidswap(inta[],inti,intj)
{
intt=a[i];
a[i]=a[j];
a[j]=t;
intpartition(inta[],intp,intr)
inti=p;
intj=r+1;
intx=a[p];
while
(1){
while(i<
r&
&
a[++i]<
x);
while(a[--j]>
if(i>
=j)break;
swap(a,i,j);
}
______________________;
returnj;
voidquicksort(inta[],intp,intr)
if(p<
r){
intq=partition(a,p,r);
quicksort(a,p,q-1);
quicksort(a,q+1,r);
intmain()
inti;
inta[]={5,13,6,24,2,8,19,27,6,12,1,17};
intN=12;
quicksort(a,0,N-1);
for(i=0;
i<
N;
i++)printf("
%d"
a[i]);
\n"
);
只填写缺少的内容,不要书写任何题面已有代码或说明性文字。
swap(a,p,j)
第五题
抽签
X星球要派出一个5人组成的观察团前往W星。
其中:
A国最多可以派出4人。
B国最多可以派出2人。
C国最多可以派出2人。
那么最终派往W星的观察团会有多少种国别的不同组合呢?
下面的程序解决了这个问题。
数组a[]中既是每个国家可以派出的最多的名额。
程序执行结果为:
DEFFF
CEFFF
CDFFF
CDEFF
CCFFF
CCEFF
CCDFF
CCDEF
BEFFF
BDFFF
BDEFF
BCFFF
BCEFF
BCDFF
BCDEF
(以下省略,总共101行)
#defineN6
#defineM5
#defineBUF1024
voidf(inta[],intk,intm,charb[])
inti,j;
if(k==N){
b[M]=0;
if(m==0)printf("
%s\n"
b);
return;
=a[k];
i++){
for(j=0;
j<
i;
j++)b[M-m+j]=k+'
A'
;
______________________;
//填空位置
inta[N]={4,2,2,1,1,3};
charb[BUF];
f(a,0,M,b);
仔细阅读代码,填写划线部分缺少的内容。
不要填写任何已有内容或说明性文字。
答案f(a,k+1,m-j,b)或f(a,k+1,m-i,b)
第六题
方格填数
如下的10个格子
+--+--+--+
||||
+--+--+--+--+
|||||
||||
+--+--+--+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。
要求:
连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
答案是:
1580
math.h>
intflag[3][4];
//表示哪些可以填数
intmpt[3][4];
//填数
voidinit()//初始化
for(i=0;
3;
for(j=0;
4;
flag[i][j]=1;
flag[0][0]=0;
flag[2][3]=0;
intdir[8][2]={0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1};
intbook=true;
for(inti=0;
for(intj=0;
4;
//判断每个数周围是否满足
if(flag[i][j]==0)continue;
for(intk=0;
k<
8;
k++)
intx,y;
x=i+dir[k][0];
y=j+dir[k][1];
if(x<
0||x>
=3||y<
0||y>
=4||flag[x][y]==0)continue;
if(abs(mpt[x][y]-mpt[i][j])==1)book=false;
if(book)ans++;
x=index/4;
y=index%4;
if(x==3)
return;
if(flag[x][y])
mpt[x][y]=i;
else
init();
第七题
剪邮票
如【图1.jpg】,有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。
请你计算,一共有多少种不同的剪取方法。
116
#i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蓝桥杯 cc 试题 答案 解析