第七届蓝桥杯程序设计大赛题目及答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七届省赛

1. 网友年龄

某君新认识一网友。当问及年龄时,他的网友说:“我的年龄是个2 位数,我比儿子大27 岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄”

请你计算:网友的年龄一共有多少种可能情况?

提示:30 岁就是其中一种可能哦.

请填写表示可能情况的种数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

7

x-y=3

2. 生日蜡烛

某君从某年开始每年都举办一次生日party ,并且每次都要吹熄与年龄相同根数的蜡烛现在算起来,他一共吹熄了236 根蜡烛。

请问,他从多少岁开始过生日party 的?请填写他开始过生日party 的年龄数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

26 #include using namespace std;

int main(){

int i,j;

int sum=0; for(i=1;i<=100;i++){ // 年龄

sum=0; for(j=i;j<=100;j++){ // 蜡烛数sum=sum+j;

if(sum==236){ cout<

break;

}

}

}

}

3. 方格填数

如下的10 个格子

填入0~9 的数字。要求:连续的两个数字不能相邻。 (左右、上下、对角都算相邻) 一共有多少种可能的填数方案?请填写表示方案数目的整数。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。// 用dfs 求

#include #include #include using namespace std;

const int maxn=4;

int mp[maxn][maxn];

int flag[10];

int ans=0;

int init() {

memset(mp,-10, sizeof mp); memset(flag,0, sizeof flag);

}

int fx[4]= {0,-1,-1,-1},fy[4]= {-1,-1,0,1};

int check(int i,int j) {

for(int f=0; f<4; f++) {

if(abs(mp[i][j]-mp[i+fx[f]][j+fy[f]])!=1||i+fx[f]<1||j+fy[f]>4||j+fy[f]<1 ) continue;

else

return 0;

}

return 1;

}

void dfs(int i,int j) {

if(i==3&&j==4) {

ans++;

return ;

}

for(int num=0; num<=9; num++) {

if(!flag[num]) { mp[i][j]=num; flag[num]=1; if(check(i,j)) if(j==4) dfs(i+1,1);

else

dfs(i,j+1); flag[num]=0;

}

}

}

int main() {

init();

dfs(1,2);

cout<

}

// 暴力求解

#include

using namespace std;

int ans=0;

void swap(int *a,int *b)

{

int *c;

c=a;

a=b;

b=c;

}

int f(int a[])// 判断这种排列组合是否符合题意{

if(a[0]-a[4]==-1||a[0]-a[4]==1) return 0;

if(a[3]-a[4]==-1||a[3]-a[4]==1) return 0;

if(a[5]-a[4]==-1||a[5]-a[4]==1) return 0;

if(a[7]-a[4]==-1||a[7]-a[4]==1)

return 0;

if(a[8]-a[4]==-1||a[8]-a[4]==1)

return 0;

if(a[9]-a[4]==-1||a[9]-a[4]==1)

return 0;

if(a[1]-a[4]==-1||a[1]-a[4]==1)

return 0;

if(a[1]-a[5]==-1||a[1]-a[5]==1)

return 0;

if(a[1]-a[6]==-1||a[1]-a[6]==1)

return 0;

if(a[0]-a[5]==-1||a[0]-a[5]==1)

return 0;

if(a[2]-a[5]==-1||a[2]-a[5]==1)

return 0;

if(a[8]-a[5]==-1||a[8]-a[5]==1)

return 0;

if(a[9]-a[5]==-1||a[9]-a[5]==1)

return 0;

if(a[6]-a[5]==-1||a[6]-a[5]==1)

return 0;

if(a[6]-a[9]==-1||a[6]-a[9]==1)

return 0;

if(a[6]-a[2]==-1||a[6]-a[2]==1)

return 0;

相关文档
最新文档