文档库 最新最全的文档下载
当前位置:文档库 › 蓝桥杯培训教程

蓝桥杯培训教程

蓝桥杯培训教程
蓝桥杯培训教程

蓝桥杯培训教程

一、逻辑推理 (2)

二、排序 (8)

三、图形(矩阵) (12)

四、数字变幻 (21)

五、数字组合与拆解 (26)

六、字符串 (45)

七、数制转换 (50)

八、排列组合 (55)

九、其它 (55)

十、数据结构 (72)

一、逻辑推理

1、谁是窃贼:

公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎。在回答公安人员的问题中:

甲说:―乙没有偷,是丁偷的。‖

乙说:―我没有偷,是丙偷的。‖

丙说:―甲没有偷,是乙偷的。‖

丁说:―我没有偷‖

请根据这四人的谈话判断谁是盗窃者

*问题分析与算法设计

假设A、B、C、D分别代表四个人,变量的值为1代表该人是窃贼。

由题目已知:四人中仅有一名是窃贼,且这四个人中的每个人要么说真话,要么说假话,而由于甲、乙、丙三人都说了两句话:―X没偷,X偷了‖,故不论该人是否说谎,他提到的两人中必有一人是小偷。故在列条件表达式时,可以不关心谁说谎,谁说实话。这样,可以列出下列条件表达式:

甲说:‖乙没有偷,是丁偷的。‖ B+D=1

乙说:―我没有偷,是丙偷有。‖ B+C=1

丙说:―甲没有偷,是乙偷的。‖ A+B=1

丁说:―我没有偷。‖ A+B+C+D=1

其中丁只说了一句话,无法判定其真假,表达式反映了四人中仅有一名是窃贼的条件。

#include

void main()

{

int i,j,a[4];

for(i=0;i<4;i++) /*假定只有第i个人为窃贼*/

{

for(j=0;j<4;j++) /*将第i个人设置为1表示窃贼,其余为0*/

if(j==i)

a[j]=1;

else

a[j]=0;

if(a[3]+a[1]==1&&a[1]+a[2]==1&&a[0]+a[1]==1) /*判断条件是否成立*/

{

printf("The thief is "); /*成立*/

for(j=0;j<=3;j++) /*输出计算结果*/

if(a[j]) printf("%c.",j+'A');

printf("\n");

}

}

}

2、谁说假话:

张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?

*问题分析与算法设计

分析题目,每个人都有可能说的是真话,也有可能说的是假话,这样就需要对每个人所说的话进行分别判断。假设三个人所说的话的真假用变量A、B、C表示,等于1表示该人说的是真话;表示这个人说的是假话。由题目可以得到:

*张三说李四在说谎张三说的是真话:a==1&&b==0

或张三说的是假话:a==0&&b==1

*李四说王五在说谎李四说的是真话:b==1&&c==0

或李四说的是假话:b==0&&c==1

*王五说张三和李四都在说谎王五说的是真话:c==1&&a+b==0

或王五说的是假话:c==0&&a+b!=0

上述三个条件之间是―与‖的关系。将表达式进行整理就可得到C语言的表达式:

(a&&!b||!a&&b)&&(b&&!c||!b&&c)&&(c&&a+b==0||!c&&a+b!=0)

穷举每个人说真话或说假话的各种可能情况,代入上述表达式中进行推理运算,使上述表达式均为―真‖的情况就是正确的结果。

*程序说明与注释

#include

int main()

{

int a,b,c;

for(a=0;a<=1;a++)

for(b=0;b<=1;b++)

for(c=0;c<=1;c++)

if((a&&!b||!a&&b)&&(b&&!c||!b&&c)&&(c&&a+b==0||!c&&a+b!=0))

{

printf("Zhangsan told a %s.\n",a?"truth":"lie");

printf("Lisi told a %s.\n",b?"truch":"lie");

printf("Wangwu told a %s.\n",c?"truch":"lie");

}

}

*运行结果

Zhangsan told a lie (张三说假话)

Lisi told a truch. (李四说真话)

Wangwu told a lie. (王五说假话)

3、诚实族和说谎族:

诚实族和说谎族是来自两个荒岛的不同民族,诚实族的人永远说真话,而说谎族的人永远说假话。迷语博士是个聪明的人,他要来判断所遇到的人是来自哪个民族的。

迷语博士遇到三个人,知道他们可能是来自诚实族或说谎族的。为了调查这三个人是什么族的,博士分别问了他们的问题,这是他们的对话:

问第一个人:―你们是什么族?‖,答:―我们之中有两个来自诚实族。‖第二个人说:―不要胡说,我们三个人中只有一个是诚实族的。‖第三个人听了第二个人的话后说:―对,就是只有一个诚实族的。‖

请根据他的回答判断他们分别是哪个族的。

*问题分析与算法设计

假设这三个人分别为A、B、C,若说谎其值为0,若诚实,其值为1。根据题目中三个人的话可分别列出:

第一个人:a&&a+b+c==2||!a&&a+b+c!=2

第二个人:b&&a+b+c==1||!b&&a+b+c!=1

第三个人:c&&a+b+c==1||!c&&a+b+c!=1

利用穷举法,可以很容易地推出结果。

*程序说明与注释

#include

int main()

{

int a,b,c;

for(a=0;a<=1;a++) /*穷举每个人是说谎还是诚实的全部情况*/

for(b=0;b<=1;b++) /*说谎:0 诚实:1*/

for(c=0;c<=1;c++)

if((a&&a+b+c==2||!a&&a+b+c!=2) /*判断是否满足题意*/

&&(b&&a+b+c==1||!b&&a+b+c!=1)

&&(c&&a+b+c==1||!c&&a+b+c!=1))

{

printf("A is a %s.\n",a?"honest":"lier"); /*输出判断结果*/

printf("B is a %s.\n",b?"honest":"lier");

printf("C is a %s.\n",c?"honest":"lier");

}

}

*运行结果

A is a lier (说谎族)

B is a lier (说谎族)

C is a lier (说谎族)

4、球队进行比赛

两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛

名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单

*程序说明与注释

#include

#include

main()

{

char i,j,k; /*i是a的对手,j是b的对手,k是c的对手*/

for(i='x';i<='z';i++)

for(j='x';j<='z';j++)

{

if(i!=j)

for(k='x';k<='z';k++)

{

if(i!=k&&j!=k)

{

if(i!='x'&&k!='x'&&k!='z')

printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);

}

}

}

getch();

}

5、谁考了100分

已知4位同学中的一位数学考了100分,当小李询问这4位是谁考了100分时,4个人的回答如下:

A说:不是我。

B说:是C

C说:是D。

D说:他胡说。

已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出考100分的人。#include

void main()

{

char thisman=' ';

int k,n=0;

for(k=1;k<=4;k++)

{

thisman=64+k;

n=(thisman!='A')+ (thisman=='C')+ (thisman=='D')+ (thisman!='D');

if(n==3)

{

printf("得100分的是%c\n",thisman);

break;

}

}

if(k>4)

printf("无解!\n");

}

6、新郎新娘问题:

教堂中来了A B C三个新郎和X Y Z三个新娘,问新人中的三位,他们互相与谁结婚。下面是三个人的回答,但全是假话,判断他们谁与谁结婚

A说他与X结婚

X说她与C结婚

C说他与Z结婚

#include

void main()

{

int a,b,c,n;

char x[3]={'X','Y','Z'};

for(a=0;a<3;a++)

for(b=0;b<3;b++)

if(a!=b)

{

c=3-a-b;

n=(a==0)+(c==0)+(c==2);

if(n==0)

printf("A-%c\tB-%c\tC-%c\n",x[a],x[b],x[c]);

}

}

7、寻找肇事车辆:

一辆汽车撞人后逃跑,4个目击者提供如下线索:

甲说:牌照第三,第四位相同(从左边数起).

乙说:牌号为31xxxx.

丙说:牌照第五,第六位相同(从左边数起).

丁说:第三位~第六位是一个整数的平方.求出此牌照号码

#include

#include

void main()

{

int i,j,k,c;

for(i=0;i<=9;i++)

for(j=0;j<=9;j++)

// if(i!=j) //如果确定三、四位与五六位不同,则用这个语句

{

k=i*1000+i*100+j*10+j;

for(c=0;c

//for(c=0;c-1

{

if(c*c==k)

printf("牌照号码是:%ld\n",310000+k);

}

}

}

8、.借书方案知多少小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?

*问题分析与算法设计

本问题实际上是一个排列问题,即求从5个中取3个进行排列的方法的总数。首先对五本书从1至5进行编号,然后使用穷举的方法。假设三个人分别借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。

*程序说明与注释

#include

int main()

{

int a,b,c,count=0;

printf("There are diffrent methods for XM to distribute books to 3 readers:\n");

for(a=1;a<=5;a++) /*穷举第一个人借5本书中的1本的全部情况*/

for(b=1;b<=5;b++) /*穷举第二个人借5本书中的一本的全部情况*/

for(c=1;a!=b&&c<=5;c++) /*当前两个人借不同的书时,穷举第三个人借5本书

中的1本的全部情况*/

if(c!=a&&c!=b) /*判断第三人与前两个人借的书是否不同*/

printf(count%8?"%2d:%d,%d,%d ":"%2d:%d,%d,%d\n ",++count,a,b,c);

/*打印可能的借阅方法*/

}

*运行结果

There are diffrent methods for XM to distribute books to 3 readers:

1: 1,2,3 2: 1,2,4 3: 1,2,5 4: 1,3,2 5: 1,3,4

6: 1,3,5 7: 1,4,2 8: 1,4,3 9: 1,4,5 10:1,5,2

11:1,5,3 12:1,5,4 13:2,1,3 14:2,1,4 15:2,1,5

16:2,3,1 17:2,3,4 18:2,3,5 19:2,4,1 20:2,4,3

21:2,4,5 22:2,5,1 23:2,5,3 24:2,5,4 25:3,1,2

26:3,1,4 27:3,1,5 28:3,2,1 29:3,2,4 30:3,2,5

31:3,4,1 32:3,4,2 33:3,4,5 34:3,5,1 35:3,5,2

36:3,5,4 37:4,1,2 38:4,1,3 39:4,1,5 40:4,2,1

41:4,2,3 42:4,2,5 43:4,3,1 44:4,3,2 45:4,3,5

46:4,5,1 47:4,5,2 48:4,5,3 49:5,1,2 50:5,1,3

51:5,1,4 52:5,2,1 53:5,2,3 54:5,2,4 55:5,3,1

56:5,3,2 57:5,3,4 58:5,4,1 59:5,4,2 60:5,4,3

二、排序

1、在选美大奖赛的半决胜赛现场,有一批选手参加比赛,比赛的规则是最后得分越高,名次越低。当半决决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。例如:

选手序号:1,2,3,4,5,6,7

选手得分:5,3,4,7,3,5,6

则输出名次为:3,1,2,5,1,3,4

请编程帮助大奖赛组委会完成半决赛的评分和排名工作。

*问题分析与算法设计

问题用程序设计语言加以表达的话,即为:将数组A中的整数从小到大进行连续编号,要求不改变数组中元素的顺序,且相同的整数要具有相同的编号。

普通的排序方法均要改变数组元素原来的顺序,显然不能满足要求。为此,引入一个专门存放名次的数组,再采用通常的算法:在尚未排出名次的元素中找出最小值,并对具有相同值的元素进行处理,重复这一过程,直到全部元素排好为止。

*程序说明与注释

#include

#define NUM 7 /*定义要处理的人数*/

int a[NUM+1]={0,5,3,4,7,3,5,6}; /*为简单直接定义选手的分数*/

int m[NUM+1],l[NUM+1]; /*m:已编名次的标记数组l:记录同名次元素的下标*/

int main()

{

int i,smallest,num,k,j;

num=1; /*名次*/

for(i=1;i<=NUM;i++) /*控制扫描整个数组,每次处理一个名次*/

if(m[i]==0) /*若尚未进行名次处理(即找到第一个尚未处理的元素)*/

{

smallest=a[i]; /*取第一个未处理的元素作为当前的最小值*/

k=1; /*数组l的下标,同名次的人数*/

l[k]=i; /*记录分值为smallest的同名次元素的下标*/

for(j=i+1;j<=NUM;j++) /*从下一个元素开始对余下的元素进行处理*/

if(m[j]==0) /*若为尚未进行处理的元素*/

if(a[j]

{

smallest=a[j]; /*则重新设置当覵最小值*/

k=0; /*重新设置同名次人数*/

l[++k]=j; /*重新记录同名次元素下标*/

}

else if(a[j]==smallest) /*若与当前最低分相同*/

l[++k]=j; /*记录同名次的元素下标*/

for(j=1;j<=k;j++) /*对同名次的元素进行名次处理*/

m[l[j>=num;

num++; /*名次加1*/

i=0; /*控制重新开始,找下一个没排名次的元素*/

}

printf("Player-No score Rank\n");

for(j=1;j<=NUM;j++) /*控制输出*/

printf(" %3d %4d %4d\n",j,a[j],m[j]);

}

*运行结果

Player-No Score Rank

1 5 3

2 3 1

3 4 2

5 7 5

5 3 1

3 5 3

7 6 4

*思考题

若将原题中的“名次连续编号,不用考虑同名次的选手人数”,改为”根据同名次的选手人数对选手的名次进行编号“,那么应该怎样修改程序。

2、合并字符串

输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。

输入:两个已经排好顺序(升序)的两个字符串

输出:一个合并在一起的有序(升序)的字符串

要求:

设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。

如果采用先进行串连接,然后再进行排序的算法,则效率太低了。

程序实例1:

#include

#include

int main()

{ char a[100],b[100],c[200];

int i=0,j=0,k=0;

gets(a);gets(b);

while(i

if(a[i]

c[k++]=a[i++];

}

else {

c[k++]=b[j++];

}

}

//把剩下的字符串合并

while(i

c[k++]=a[i++];

}

while(j

c[k++]=b[j++];

}

c[k]='\0'; //加上结束符

printf("%s\n",c);

return 0;

}

输入:

abcdef

bcefghi

输出:abbccdeeffghi

3、合并果子

在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。

每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。

因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。

例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。

输入:

输入包括两行,第一行是一个整数n(1<=n<=10000),表示果子的种类数。第二行

包含n个整数,用空格分隔,第i个整数ai(1<=ai<=10000)是第i种果子的数目。

输出:

输出包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于231。

程序实例1:

#include

int in[ 100 ];

int find( int len ) //返回最小堆堆序号

{

int i,min=10000,j;

for ( i = 1; i <= len; i ++ ) {

if ( in[ i ] < min ) {

j = i;

min = in[ i ];

}

}

return j;

}

int main( void)

{

int i,j,min,result,n,a,b;

scanf( "%d", &n );

for( i = 1; i <= n; i ++ ) {

scanf( "%d", &in[ i ] );

}

result = 0;

for( i = 1; i <= n - 1; i ++ ) {

j = find( n ); //最小的堆

a = in[ j ];

in[ j ] = 10001;

j = find( n );

b = in[ j ]; //次最小的堆

in[ j ] = a + b; //合并

result += in[ j ];

}

printf( "%d\n", result );

return 0;

}

输入:

3

1 2 9

输出:15

三、图形(矩阵)

1、编写函数void rotate(int (*t)[N], int n)。函数功能是将t指向的数组中存储的n×n.矩阵最外圈全部元素做顺时钟旋转900变换。

例如:若n=3有如下矩阵:

1 2 3

4 5 6

7 8 9

将矩阵最外圈全部元素做顺时钟旋转900变换后应为:

7 4 1

8 5 2

9 6 3

2、求一个3行5列的二维数组中元素的最大值。

#include

typedef unsigned int UINT;

int main()

{

UINT mx=0,my=0;

UINT juzhen[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};

UINT maxnumber=0;

maxnumber=juzhen[0][0];

for (int i=0;i!=3;++i)

{

for (int j=0;j!=5;++j)

{

if (juzhen[i][j]>maxnumber)

{

maxnumber=juzhen[i][j];

mx=i;

my=j;

}

}

}

cout<<"矩阵中最大数是"<

"<

//这里的样例输出最大数是15,在2行4列.听起来似乎比三行5列都少一.

//这其实是计算机计数都是从0开始.我们人习惯从1开始计数..

//如果你需要从1计数.也很简单..把for循环改改.int i=1;i!=6;++i 里面的循环液照样改下.

return 0;

}

3、((2012年预赛题))转方阵

对一个方阵转置,就是把原来的行号变列号,原来的列号变行号例如,如下的方阵:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

转置后变为:

1 5 9 13

2 6 10 14

3 7 11 15

4 8 12 16

但,如果是对该方阵顺时针旋转(不是转置),却是如下结果:

13 9 5 1

14 10 6 2

15 11 7 3

16 12 8 4

下面的代码实现的功能就是要把一个方阵顺时针旋转。

#include

#include

void rotate(int* x, int rank)

{

int* y = (int*)malloc( ); // 填空sizeof(int)*rank*rank

for(int i=0; i

{

y[_________________________] = x[i]; // 填空i%rank*rank+i/rank }

for(i=0; i

{

x[i] = y[i];

}

free(y);

}

int main(int argc, char* argv[])

{

int x[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

int rank = 4;

rotate(&x[0][0], rank);

for(int i=0; i

{

for(int j=0; j

{

printf("%4d", x[i][j]);

}

printf("\n");

}

return 0;

}

请分析代码逻辑,并推测划线处的代码。

4、(2011年预赛题)由键盘输入一个自然数N(1≤N≤9),要求程序在屏幕上输出如下图形。

N=1时:N=3时:N=4时:

1111111111111

122211222221

123211233321

122211234321

111111233321

1222221

1111111注:应保证N在图形中只出现一次,且在中心。

import java.util.Scanner;

import java.text.DecimalFormat;

public class LuoxuanJuzhen

{

private int[][] array;

private int m,n;

public LuoxuanJuzhen(int m, int n) //相当于动态数组,数组的行、列由参数m和n确定{

this.m = m;

this.n = n;

array = new int[m][];

for(int i = 0; i < m; i++)

array[i] = new int[n];

}

private void fill() //构造矩阵,填入内容

{

int count = m * n;

int direct = 0;

int round = 1;

for(int index = 1, x = 0, y = 0; index <= count; index++) {

array[x][y] = index;

switch(direct)

{

case 0: //向右

if(y < n - round)

y++;

else

{

direct = 1;

x++;

}

break;

case 1://向下

if(x < m - round)

x++;

else

{

direct = 2;

y--;

}

break;

case 2://向左

if(y >= round)

y--;

else

{

direct = 3;

x--;

}

break;

case 3://向上

if(x > round)

x--;

else

{

direct = 0;

round++;

y++;

}

break;

}

}

}

private void printJuzheng() //输出矩阵

{

//DecimalFormat df = new DecimalFormat(" 000");//格式化,让不足三位的数前面用0补足三位,如2表示为002

for(int i = 0; i < m; i++)

{

for(int j = 0; j < n; j++)

System.out.print("\t"+array[i][j]);

//System.out.print(df.format(array[i][j]));

System.out.println();

}

}

public static void main(String[] args)

{

Scanner input = new Scanner(System.in);

int m = input.nextInt();

LuoxuanJuzhen Juzheng = new LuoxuanJuzhen(m,m);

Juzheng.fill();

Juzheng.printJuzheng();

}

}

5、空心的倒三角型

背景:请根据要求打印可空心倒三角形。

输入:

输入三角形的高度(h >= 0)。

输出:

打印相应的空心倒三角形。图样参见测试用例。

如:

输入为5,则输出:

*********

* *

* *

* *

*

程序实例1:

#include

void main( )

{

int n,i,j;

scanf("%d",&n);

for(i=0;i

{for(j=0;j<(2*n-1-i);j++)

{if (i==0||i==j||j==(-i+2*n-2))printf("*");

else printf(" ");

}

printf("\n");

}

}

程序实例2:

#include

void main()

{

int r,l,h;

scanf("%d",&h);

for(r=1;r<=2*h-1;r++)

printf("*");

for(r=2;r<=h;r++)

{

printf("\n");

for(l=1;l<=2*h-r;l++)

printf("%s",(l==r||l==2*h-r)?"*":" ");

}

}

6、在20×20的网格中同一直线上四个数的最大乘积是多少?

在以下这个2020的网格中,四个处于同一对角线上的相邻数字用红色标了出来:这四个数字的乘积是:26 63 78 14 = 1788696.

08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08

49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00

81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65

52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91

22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80

24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50

32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70

67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21

24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72

21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95

78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92

16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57

86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58

19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40

04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66

88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69

04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36

20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16

20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54

01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48

在这个2020网格中,处于任何方向上(上,下,左,右或者对角线)的四个相邻数

字的乘积的最大值是多少?

7、扫雷

背景

你玩儿过扫雷游戏吧?有个操作系统中带了这个小游戏,那个系统叫什么来着?在游戏中要想过关,就必须要在一个NxM 的区域上找出所有的地雷。游戏过程中,计算机会在地图上显示一些数字从而帮助你确定哪里有地雷。例如,在下面这个有两颗地雷的4x4 的地图(*表示地雷):

*........*...... 根据上面的地图,可以计算出应该提供给游戏者的数字如下所示:

*10022101*101110 每个数字表示了该方格周围到底有几个地雷,当然,一个方格周围最多的时候只会有八个。

输入:

输入中将包括一系列的地图,每个地图的第一行有两个整数n 和m(0

输出:

针对每一个地图,首先输出一行:

Field #x:其中x 是当前地图的编号(从1 开始)。下面的n 行则将地图中的"." 以数字表示,该数字表示该方格周围有多少颗地雷。

程序实例1:

#include "stdio.h"

void main()

{ int m,n,t,p,q,x,y,a[200][200];

char c;

t=1;

scanf("%d%d",&m,&n);

A: if(m==0) goto B;

for(p=0;p<=m;p++) for(q=0;q<=n;q++) a[p][q]=0;

for(p=0;p

for(q=0;q<=n;q++)

{scanf("%c",&c);

if(c=='*')

{a[p][q]=-1;

for(x=p-1;x<=p+1;x++)

for(y=q-1;y<=q+1;y++)

if(x>=0&&x<=m&&y>=0&&y<=n&&a[x][y]!=-1) a[x][y]++;

}

}

printf("Field #%d:\n",t);

for(p=0;p

{for(q=1;q<=n;q++) (a[p][q]==-1)?printf("*"):printf("%d",a[p][q]);

printf("\n");

}

scanf("%d%d",&m,&n);

t++;

if(m!=0) {printf("\n");goto A;}

B: ;

}

输入:

4 4

*...

....

.*..

....

3 5

**...

.....

.*...

0 0

输出:

Field #1:

*100

2210

1*10

1110

Field #2:

**100

33200

1*100

程序实例2:

#include

int main(void)

{ int f(int m,int n,int i,int j,char a[100][100]);

int m,n,i,j,b=0;

char a[100][100];

scanf("%d %d",&m,&n);

while(m!=0&&n!=0)

{ b++;

if(b!=1) printf("\n");

for(i=0;i

{ scanf("%s",a[i]);

}

for(i=0;i

{ for(j=0;j

{ if(a[i][j]=='.') a[i][j]=f(m,n,i,j,a)+48;

}

}

printf("Field #%d:\n",b);

for(i=0;i

{ for(j=0;j

{ printf("%c",a[i][j]);

}

printf("\n");

}

scanf("%d %d",&m,&n);

}

return 0;

}

int f(int m,int n,int i,int j,char a[100][100])

{ int k,l,b=0;

for(k=i-1;k<=i+1;k++)

{ for(l=j-1;l<=j+1;l++)

{ if(k<0||l<0||k>=m||l>=n||k==i&&l==j) continue;

else if(a[k][l]=='*') b++;

}

}

return b;

}

输入:

3 3

...

...

小学数学《排列组合》练习题(含答案)

小学数学《排列组合》练习题(含答案) 1、计算 ①43 56C A -;②2265C A ÷。 解答: ①43 56C A -=5432???-654321 ????=120-20=100。 ②2265C A ÷5465321 ?=?÷=? 2、某班要从30名同学中选出3名同学参加数学竞赛,有多少种选法?如果从30名同学中选出3名同学站成一排,又有多少种站法? 解答: 参加竞赛的选法:330302928321 C ????==4060种 站成一排的站法:330A =30×29×28=24360种 参加竞赛的选法有4060种,站成一排的站法有24360种 3、7个不同的小球放入4个不同的盒子中,每个盒子只能放一个,一共有多少种情况? 解答: 47A =7654???=840(种) 一共有840种不同的情况。 4、7个相同的小球放入4个不同的盒子中,每个盒子至少放一个,一共有多少种情况? 解答: 1+1+1+0=3,1+2+0+0=3,3+0+0+0=3,分三种情况 ①选出一个盒子,不再放入球,其他三个盒子再各放入一个:1 4C ; ②选出两个盒子,分别再放入一个球,两个球:24A ③选出一个盒子,再放入三个球:1 4C 总的放法:1 4C +24A +14C =20(种) 5、从1,3,5,7,9中任取三个数字,从2,4,6,8中任取两个数字,组成没有重复数字的五位数,一共可以组成多少个数?

解答: 第一步,从1,3,5,7,9中任取三个数字,这是一个组合问题,有35C 种方法; 第二步,从2、4、6、8中任取两个数字,也是一个组合问题,有24C 种方法; 第三步,用取出的5个数字组成没有重复数字的五位数,有5 5A 种方法。 再由分步计数原理求总的个数。 325545A 7200 C C ??=(个) 一共能组成7200个没有重复数字的五位数。 6、在6名女同学,5名男同学中选出4名女同学,3名男同学站成一排,有多少种排法? 解答: 437 657A C C ??=765000(种) 有765000种排法。 [评注]:简单的先组合,再排列题型。 7、在6名女同学,5名男同学中选出4名女同学,3名男同学,男女相间站成一排,有多少种排法? 解答:需要站排的7名同学确定后,男女相间的站法如下: 女,男,女,男,女,男,女,男,女 可以先排四个女生,然后再在四个女生间隔的三个位置中排那三名男生。 [解答]:43436543A A C C ???=4365A A ?=21600(种) 有21600种排法 8、红、黄、蓝、白四种颜色不同的小旗,各有2、2、3、3面,任意取出三面排成一行,表 示一种信号,问:共可以表示多少种不同的信号? 解答:取出的3面旗子,可以是一种颜色、两种颜色、三种颜色,应按此进行分类。 ①一种颜色:都是蓝色的或者都是白色的,2种可能; ②两种颜色:2 4A 336?=; ③三种颜色:3 4A 24= 所以,一共可以表示2+36+24=62种不同的信号

大学生可以参加的竞赛项目

年大学生可以参加的竞赛项目

————————————————————————————————作者:————————————————————————————————日期:

校外学生科技学术活动计划一览表 (共91项) 序号竞赛名称主办单位 1 第八届“挑战杯”全国大学生创业计划竞 赛 共青团中央、中国科协、教育部、全国学联 2 第三届“北斗杯”全国青少年科技创新大 赛 教育部科技司、团中央学校部、中国科协青少年科技中心、中国卫星导航系统管理办 公室 3 第二届全国高等学校采矿工程专业学 生实践作品大赛 教育部高等学校地矿学科教学指导委员会 4 第七届全国大学生交通科技大赛教育部高等学校交通运输与工程学科教学指导委员会 5 “高教杯”全国三维数字化创新设计大赛国家制造业信息化培训中心、全国三维数字化创新设计大赛组委会 6 全国信息技术应用水平大赛教育部教育管理信息中心 7 Esri杯中国大学生GIS软件开发竞赛中国地理信息系统协会、Esri中国(北京)有限公司 8 supermap杯全国高校GIS大赛中国地理学会、北京超图软件股份有限公司 9 全国高校GIS技能大赛 中国测绘学会、工业和信息化部人才交流中心、教育部地理信息系统软件及其应用工 程研究中心

10 全国高校GIS 论坛GIS论坛组委会 教育部普通高校测绘学科教学指导委员会、国家测绘局职业技能鉴定指导中心、中国11 全国普通高校大学生测绘技能大赛 测绘学会 12 山东省高校大学生测量技能大赛山东测量学会 13 全国第二届地质技能大赛中国地质调查局、中国地质学会地质教育研究分会 14 第五届山东省高校结构设计大赛山东省土木工程学会建筑结构专业委员会、山东大学 15 2012年山东省大学生建筑设计竞赛山东省住房和城乡建设厅、山东省科学技术协会 2012全国高等学校城市规划专业社会 16 全国高等学校城市规划专业教育指导委员会 综合实践调研报告课程作业评优 17 山东省大学生机电产品创新设计竞赛山东省机械工业协会、山东省机械工程学会 “高教杯”全国大学生先进成图技术与产 教育部高等学校工程图学教学指导委员会 18 品信息建模创新大赛 19 过程装备实践与创新大赛教育部高等学校机械学科教学指导委员会 20 “飞思卡尔”杯全国大学生智能汽车竞赛教育部高等学校自动化专业教学指导分委员会

蓝桥杯哦2010第一届大赛试题

第一题,以下函数的功能是将任意整数进行因式分解, 请完成该程序的空缺使函数能够正常运算 void f(int n) { for(int i=2; i1) printf(“%d\n”, n); } 第二题,以下函数的功能是将给定字符串进行倒序输出,请完成该函数空缺部分。 char* p = “abcdef”; char* q = (char*)malloc(strlen(p)+1); for(int i=0, int len=strlen(p); i

第三题,(这题的题目到底是要干啥,本人到现在沿未明了,数学学统计好,但可以确定原题给出的代码就是如此) int f(int m, int n) { int a = 1; int m1 = m; //—–(3)—- a *= m1–; int b = 1; while(n>1) b *= n–; return a / b; } 第四题,任意给出一个四位数, 把它重新组成一个四位的最大数和一个最小数, 算出两者间的差。 例如:3721这个数,可以重组成:7321和1237,相数之差为7321-1237 请完善下面这个函数,以实现此功能 int f(int n) { int N[4]; for(int i=0; i<4; i++) { N[3-i] = n % 10;

小学数学 《 排列组合》练习题(含答案)

小学数学《排列组合》练习题(含答案) 例1 由数字0、1、2、3可以组成多少个没有重复数字的偶数? 分析注意到由四个数字0、1、2、3可组成的偶数有一位数、二位数、三位数、四位数这四类,所以要一类一类地考虑,再由加法原理解决. 第一类:一位偶数只有0、2,共2个; 第二类:两位偶数,它包含个位为0、2的两类.若个位取0,则十位可有C13种取法;若个位取2,则十位有C12种取法.故两位偶数共有(C13+C12)种不同的取法; 第三类:三位偶数,它包含个位为0、2的两类.若个位取0,则十位和百位共有P23种取法;若个位取2,则十位和百位只能在0、1、3中取,百位有2种取法,十位也有2种取法,由乘法原理,个位为2的三位偶数有2×2个,三位偶数共有(P23+2×2)个; 第四类:四位偶数.它包含个位为0、2的两类.若个位取 0,则共有P33个;若个位取 2,则其他 3位只能在 0、 1、 3中取.千位有2种取法,百位和十位在剩下的两个数中取,再排成一列,有P22种取法.由乘法原理,个位为2的四位偶数有2×P22个.所以,四位偶数共有(P33+2×P22)种不同的取法. 解:由加法原理知,共可以组成 2+(C13+C12)+(P23+2×2)+(P33+2×P22) =2+5+10+10 =27 个不同的偶数. 补充说明:本题也可以将所有偶数分为两类,即个位为0和个位为2的两类.再考虑到每一类中分别有一位、两位、三位、四位数,逐类讨论便可求解. 例2 国家举行足球赛,共15个队参加.比赛时,先分成两个组,第一组8个队,第二组7个队.各组都进行单循环赛(即每个队要同本组的其他各队比赛一场).然后再由各组的前两名共4个队进行单循环赛,决出冠亚军.问:①共需比赛多少场?②如果实行主客场制(即A、B两个队比赛时,既要在A队所在的城市比赛一场,也要在B队所在的城市比赛一场),共需比赛多少场? 分析比赛的所有场次包括三类:第一组中比赛的场次,第二组中比赛的场次,决赛时比赛的场次. ①中,第一组中8个队,每两队比赛一场,所以共比赛C28场;第二组中7个队,每两队比赛一场,所以共比赛C27场;决赛中4个队,每两队比赛一场,所以共比赛C24场.

第十一届蓝桥杯大赛软件类省赛第三场 CC++

第十一届蓝桥杯大赛软件类省赛第三场C/C++大学B组 第十一届蓝桥杯大赛软件类省赛第三场 C/C++大学B组 【考生须知】 考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试题。 考试时间为4小时。考试期间选手可浏览自己已经提交的答案,被浏览的答案允许拷贝。时间截止后,将无法继续提交或浏览答案。 对同一题目,选手可多次提交答案,以最后一次提交的答案为准。 选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它方式提交的答案无效。 试题包含“结果填空”和“程序设计”两种题型。 结果填空题:要求选手根据题目描述直接填写结果。求解方式不限。不要求源代码。把结果填空的答案直接通过网页提交即可,不要书写多余的内容。 程序设计题:要求选手设计的程序对于给定的输入能给出正确的输出结果。考生的程序只有能运行出正确结果才有机会得分。 注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。 对于编程题目,要求选手给出的解答完全符合GNU C/C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。 代码中允许使用STL类库。 注意:main函数结束必须返回0 注意:所有依赖的函数必须明确地在源文件中#include,不能通过工程设置而省略常用头文件。 所有源码必须在同一文件中。调试通过后,拷贝提交。 提交时,注意选择所期望的编译器类型。 第十一届蓝桥杯大赛软件类省赛第三场1

第十一届蓝桥杯大赛软件类省赛第三场C/C++大学B组 试题A:数青蛙 本题总分:5分 【问题描述】 “一只青蛙一张嘴,两只眼睛四条腿。两只青蛙两张嘴,四只眼睛八条腿。三只青蛙三张嘴,六只眼睛十二条腿。……二十只青蛙二十张嘴,四十只眼睛八十条腿。” 请问上面这段文字,如果完全不省略,全部写出来,从1到20只青蛙,总共有多少个汉字。 约定:数字2单独出现读成“两”,在其他数里面读成“二”,例如“十二”。10读作“十”,11读作“十一”,22读作“二十二”。 请只计算汉字的个数,标点符号不计算。 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 试题A:数青蛙2

蓝桥杯比赛心得

蓝桥杯比赛心得 首先想说的是,这次做的太糟糕了吧。第一是时间没有分配好,第二是太过心急。 做第一题时,很快写出了公式,心想咋出这么简单的题目。本想自己不敲代码了,直接拿笔算算得了。后来发现用笔也不是太容易,就敲了代码,刚开始不知道怎么回事不出结果,后来用了个double 来保存结果,然后就输出结果了。后来查了查才知道之前用了这句 If(i*2.3+j*1.9==82.3)cout<然后Iffabs((i*2.3+j*1.9-82.3)<0.0000001)cout<

迷茫了会,后来就用了四个for循环,将结果用a,b分别表示出来,然后很快结果就出来了,开始会考虑用的double不会有误差,然后还特意将编译出来的结果一个一个的看看,确认是对的,然后就稳稳当当的提交了86!后来和学姐他们讨论的时候才发现自己有个问题忘了考虑了,2/2 *3/3这样的情况是要除去的!!!好吧,就这么错了!很多时候都会觉得自己太粗心大意了,然后就想到了曾经看到的一篇文章,说是所谓的粗心是你对知识的理解不透彻掌握的不扎实。往往以为自己做出来了就完事大吉了,然而最后才发现自己顾此失彼了! 做完分子分母问题当时觉得前面三道题做的必定是对的,然后就又把后面的题目有都看了一遍,同时决定后面的三道答题放弃不做了。接着我看来看7进制问题,发现题目没有看懂。。然后我觉得数字填数挺有意思就看看手写能不能搞定,当时看到了上下两个三角形一共六条边,一共12个数1-12,平均每条线上的值的和为26,然后觉得那两个空就是10或者5,15+11==26,然后在本子上划了划,感觉做不出来,就放那了,其实可以先随便蒙一个的,很大可能就对了呀。。。总之还是没有思路吧。 接着就是随便看其他的题目了瞄到了最后一题,当时感觉是可以做出来的,只是时间会用的比较长。好像是从11点多点开始做的,一直做到1点,太死心塌地了,,,感觉差一点就做出来了吧,后来和老师讨论才发现自己的思路还是错的。。。若是拿最后放弃最后一道题检查一下也不至于搞的这么惨。。。。。 比赛的时候还是有点紧张的吧,,心态调的不是太好,最重要的

高中数学排列组合专题

排列组合 一.选择题(共5小题) 1.甲、乙、丙三同学在课余时间负责一个计算机房的周一至周六的值班工作,每天1人值班,每人值班2天,如果甲同学不值周一的班,乙同学不值周六的班,则可以排出不同的值班表有() A.36种B.42种C.50种D.72种 2.某城市的街道如图,某人要从A地前往B地,则路程最短的走法有() A.8种 B.10种C.12种D.32种 3.某次联欢会要安排3个歌舞类节目,2个小品类节目和1个相声类节目的演出顺序,则同类节目不相邻的排法种数是() A.72 B.120 C.144 D.168 4.现将甲乙丙丁4个不同的小球放入A、B、C三个盒子中,要求每个盒子至少放1个小球,且小球甲不能放在A盒中,则不同的放法有() A.12种B.24种C.36种D.72种 5.从6人中选4人分别到巴黎、伦敦、悉尼、莫斯科四个城市游览,要求每个城市有一人游览,每人只游览一个城市,且这6人中甲、乙两人不去巴黎游览,则不同的选择方案共有() A.300种B.240种C.144种D.96种 二.填空题(共3小题) 6.某排有10个座位,若4人就坐,每人左右两边都有空位,则不同的坐法有种. 7.四个不同的小球放入编号为1,2,3的三个盒子中,则恰有一个空盒的放法共有种(用数字作答). 8.书架上原来并排放着5本不同的书,现要再插入3本不同的书,那么不同的

插法共有种. 三.解答题(共8小题) 9.一批零件有9个合格品,3个不合格品,组装机器时,从中任取一个零件,若取出不合格品不再放回,求在取得合格品前已取出的不合格品数的分布列10.已知展开式的前三项系数成等差数列. (1)求n的值; (2)求展开式中二项式系数最大的项; (3)求展开式中系数最大的项. 11.设f(x)=(x2+x﹣1)9(2x+1)6,试求f(x)的展开式中: (1)所有项的系数和; (2)所有偶次项的系数和及所有奇次项的系数和. 12.求(x2+﹣2)5的展开式中的常数项. 13.求值C n5﹣n+C n+19﹣n. 14.3名男生,4名女生,按照不同的要求排队,求不同的排队方案的种数.(1)选5名同学排成一行; (2)全体站成一排,其中甲只能在中间或两端; (3)全体站成一排,其中甲、乙必须在两端; (4)全体站成一排,其中甲不在最左端,乙不在最右端; (5)全体站成一排,男、女各站在一起; (6)全体站成一排,男生必须排在一起; (7)全体站成一排,男生不能排在一起; (8)全体站成一排,男、女生各不相邻; (9)全体站成一排,甲、乙中间必须有2人; (10)全体站成一排,甲必须在乙的右边; (11)全体站成一排,甲、乙、丙三人自左向右顺序不变; (12)排成前后两排,前排3人,后排4人. 15.用1、2、3、4、5、6共6个数字,按要求组成无重复数字的自然数(用排列数表示).

第七届蓝桥杯大赛2016年蓝桥杯个人赛 (电子类) 省赛 单片机设计与开发科目

准考证号 工位号 注意:只填写准考证号和工位号,否则试卷作废 密 封 线 ----------------------------------------------------------------------------- 第七届蓝桥杯全国软件和信息技术专业人才大赛个人赛 (电子类)省赛 单片机设计与开发科目 竞赛时间:5小时 题 号 一 二 三 总 分 配 分 10 30 60 100分 得 分 “模拟风扇控制系统”设计任务书 功能简述 “模拟风扇控制系统”能够模拟电风扇工作,通过按键控制风扇的转动速度和定时时间, 数码管实时显示风扇的工作模式,动态倒计时显示剩余的定时时间,系统主要由数码管显示、单片机最小系统、按键输入和电机控制保护电路组成,系统框图如图1所示: 图1. 系统框图 单总线驱动程序、CT107D 单片机考试平台电路原理图以及本题所涉及到的芯片数据手册,可参考计算机上的电子文档。程序流程图及相关工程文件请以考生号命名,并保存在计算机上的考生文件夹中(文件夹名为考生准考证号,文件夹保存在监考员指定位置)。 DS18B20 MCU 按键输入 LED 指示灯 数码管显示 PWM 输出

设计任务及要求 1.工作模式 设备具有“睡眠风”、“自然风”和“常风”三种工作模式可以通过按键切换,通过单片机P34引脚输出脉宽调制信号控制电机运行状态,信号频率为1KHz。 1.1“睡眠风”模式下,对应PWM占空比为20%; 1.2“自然风”模式下,对应PWM占空比为30%; 1.3“常风”模式下,对应PWM占空比为70%; 2.数码管显示 数码管实时显示设备当前工作模式和剩余工作时间(倒计时),如图2所示。 - 1 - 80 0 5 0 工作模式:睡眠风熄灭剩余工作时间:50秒 图2.工作模式和剩余工作时间显示 “睡眠风”状态下,对应数码管显示数值为1,自然风模式下,显示数值为2,常风模式下,显示数值为3。 3.按键控制 使用S4、S5、S6、S7四个按键完成按键控制功能。 2.1 按键S4定义为工作模式切换按键,每次按下S4,设备循环切换三种工作模式。 工作过程如下: 睡眠风自然风常风 2.2 按键S5定义为“定时按键”每次按下S5,定时时间增加1分钟,设备的剩余 工作时间重置为当前定时时间,重新开始倒计时,工作过程如下: 0分钟1分钟2分钟 设备剩余工作时间为0时,停止PWM信号输出。 2.3 按键S6定义为“停止”按键,按下S6按键,立即清零剩余工作时间,PWM 信号停止输出,直到通过S5重新设置定时时间。 2.4 按键S7定义为“室温”按键,按下S7,通过数码管显示当前室温,数码管显 示格式如图3所示,再次按下S7,返回图2所示的工作模式和剩余工作时间

高中数学排列组合经典题型全面总结版

高中数学排列与组合 (一)典型分类讲解 一.特殊元素和特殊位置优先策略 例1.由0,1,2,3,4,5可以组成多少个没有重复数字五位奇数. 解:由于末位和首位有特殊要求,应该优先安排, 先排末位共有1 3C 然后排首位共有1 4C 最后排其它位置共有 34A 由分步计数原理得1 1 3 434 288C C A = 练习题:7种不同的花种在排成一列的花盆里,若两种葵花不种在中间,也不种在两端的花盆里,问有多少不同的种法? 二.相邻元素捆绑策略 例2. 7人站成一排 ,其中甲乙相邻且丙丁相邻, 共有多少种不同的排法. 解:可先将甲乙两元素捆绑成整体并看成一个复合元素,同时丙丁也看成一个复合元素,再与其它元素进行排列,同时对相邻元 素内部进行自排。由分步计数原理可得共有 522522480A A A =种不同的排法 练习题:某人射击8枪,命中4枪,4枪命中恰好有3枪连在一起的情形的不同种数为 20 三.不相邻问题插空策略 例3.一个晚会的节目有4个舞蹈,2个相声,3个独唱,舞蹈节目不能连续出场,则节目的出场顺序有多少种? 解:分两步进行第一步排2个相声和3个独唱共有55A 种, 第二步将4舞蹈插入第一步排好的6个元素中间包含首尾两个空位共有种 46 A 不同的方法,由分步计数原理,节目的不同顺序共有54 56A A 种 练习题:某班新年联欢会原定的5个节目已排成节目单,开演前又增加了两个新节目.如果将这两个新节目插入原节目单中,且两个新节目不相邻,那么不同插法的种数为 30 四.定序问题倍缩空位插入策略 例4. 7人排队,其中甲乙丙3人顺序一定共有多少不同的排法 解:(倍缩法)对于某几个元素顺序一定的排列问题,可先把这几个元素与其他元素一起进行排列,然后用总排列数除以这几个元素 之间的全排列数,则共有不同排法种数是: 73 73/A A (空位法)设想有7把椅子让除甲乙丙以外的四人就坐共有 47 A 种方法,其余的三个位置甲乙丙共有 1种坐法,则共有4 7A 种方法。 思考:可以先让甲乙丙就坐吗? (插入法)先排甲乙丙三个人,共有1种排法,再把其余4四人依次插入共有 方法 练习题:10人身高各不相等,排成前后排,每排5人,要求从左至右身高逐渐增加,共有多少排法? 5 10C 五.重排问题求幂策略 例5.把6名实习生分配到7个车间实习,共有多少种不同的分法 解:完成此事共分六步:把第一名实习生分配到车间有 7 种分法.把第二名实习生分配到车间也有7种分依此类推,由分步计数原 理共有6 7种不同的排法 练习题: 1. 某班新年联欢会原定的5个节目已排成节目单,开演前又增加了两个新节目.如果将这两个节目插入原节目单中,那么不同插 法的种数为 42 4 4 3 允许重复的排列问题的特点是以元素为研究对象,元素不受位置的约束,可以逐一安排各个元素的位置,一般地n 不同的元素没有限制地安排在m 个位置上的排列数为n m 种

高中数学排列组合题型总结与易错点提示25587汇编

排列组合 复习巩固 1.分类计数原理(加法原理) 完成一件事,有n 类办法,在第1类办法中有1 m 种不同的方法,在第2类办法中有2 m 种不同的方法,…,在第n 类办法中有n m 种不同的方法,那么完成这件事共有:12n N m m m =+++种不同的方法. 2.分步计数原理(乘法原理) 完成一件事,需要分成n 个步骤,做第1步有1 m 种不同的方法,做第2步有2m 种不同的方法,…,做第n 步有n m 种不同的方法,那么完成这件事共有:12n N m m m =???种不同的方法. 3.分类计数原理分步计数原理区别 分类计数原理方法相互独立,任何一种方法都可以独立地完成这件事。 分步计数原理各步相互依存,每步中的方法完成事件的一个阶段,不能完成整个事件. 一.特殊元素和特殊位置优先策略 例1.由0,1,2,3,4,5可以组成多少个没有重复数字五位奇数. 解:由于末位和首位有特殊要求,应该优先安排,以免不合 要求的元素占了这两个位置. 先排末位共有13 C C 1 4 A 3 4 C 1 3 然后排首位共有14 C 最后排其它位置共有34 A 由分步计数原理得113434 288C C A = 练习题:7种不同的花种在排成一列的花盆里,若两种葵花

不种在中间,也不种在两端的花盆里,问有多少不同的种法? 二.相邻元素捆绑策略 例2. 7人站成一排 ,其中甲乙相邻且丙丁相邻, 共有多少种不同的排法. 解:可先将甲乙两元素捆绑成整体并看成一个复合元素, 同时丙丁也看成一个复合元素,再与其它元素进行排列,同时对相邻元素内部进行自排。由分步计数原理可得共有5225 2 2 480A A A 种不同的排法 乙 甲丁 丙 练习题:某人射击8枪,命中4枪,4枪命中恰好有3枪连在一起的情形的不同种数为 20 三.不相邻问题插空策略 例3.一个晚会的节目有4个舞蹈,2个相声,3个独唱,舞蹈 节目不能连续出场,则节目的出场顺序有多少种? 解:分两步进行第一步排2个相声和3个独唱共有55 A 种,第二步将4舞蹈插入第一步排好的6个元素中间包含首尾两个空位共有种46 A 不同的方法,由分步计数原理,节目的不同顺序共有5456 A A 种 练习题:某班新年联欢会原定的5个节目已排成节目单, 要求某几个元素必须排在一起的问题,可以用捆绑法来解决问题.即将需要相邻的元素合并为一个元素,再与其它元素 一起作排列 ,同时要注意合并元素内部也必须排列. 元素相离问题可先把没有位置要求的元素进行排队再把不相邻元素插入中间和两端

第十一届蓝桥杯校内赛校内选拔赛(2020蓝桥杯校选1-javac.)

第十一届蓝桥杯校内赛/校内选拔赛(2020蓝桥杯校选1-java/c) 一、问题描述 请问十六进制数1949对应的十进制数是多少?请特别注意给定的是十六进制,求的是十进制。 答案提交: 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. 二、问题描述 两个二进制数11110011101和1111101001的和是多少?请用二进制表示,注意在提交的时候不要提交前导0。 答案提交: 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个二进制数,在提交答案时只填写这个二进制数,填写多余的内容将无法得分。 三、问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。 请问,总共能排列如多少个不同的单词。 答案提交: 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 四、问题描述 在2019个有区别的球中选3个球放在一个盘子里,请问有多少种选法? 答案提交: 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 五、问题描述 小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音字母组成。 给定一个单词,请判断这个单词是否也是这种单词,如果是请输出yes,否则请输出no。 元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。 输入格式: 输入一行,包含一个单词,单词中只包含小写英文字母。

(完整版)高考数学专题之排列组合小题汇总

5.我市拟向新疆哈密地区的三所中学派出5名教师支教,要求每所中学至少派遣一名教师,则不同的派出方法有( ) A . 300种 B . 150种 C . 120种 D . 90种 6.一只小青蛙位于数轴上的原点处,小青蛙每一次具有只向左或只向右跳动一个单位或者两个单位距离的能力,且每次跳动至少一个单位.若小青蛙经过5次跳动后,停在数轴上实数2位于的点处,则小青蛙不同的跳动方式共有( )种. A . 105 B . 95 C . 85 D . 75 7.中国古代中的“礼、乐、射、御、书、数”合称“六艺”.“礼”,主要指德育;“乐”,主要指美育;“射”和“御”,就是体育和劳动;“书”,指各种历史文化知识;“数”,数学.某校国学社团开展“六艺”课程讲座活动,每艺安排一节,连排六节,一天课程讲座排课有如下要求:“数”必须排在前三节, 且“射”和“御”两门课程相邻排课,则“六艺”课程讲座不同排课顺序共有( ) A . 120种 B . 156种 C . 188种 D . 240种 8.郑州绿博园花展期间,安排6位志愿者到4个展区提供服务,要求甲、乙两个展区各安排一个人,剩下两个展区各安排两个人,其中的小李和小王不在一起,不同的安排方案共有( ) A . 168种 B . 156种 C . 172种 D . 180种 9.用6种不同的颜色对正四棱锥的8条棱染色,每个顶点出发的棱的颜色各不相同,不同的染色方案共有多少种( ) A . 14400 B . 28800 C . 38880 D . 43200 10.《红海行动》是一部现代海军题材影片,该片讲述了中国海军“蛟龙突击队”奉命执行撤侨任务的故事.撤侨过程中,海军舰长要求队员们依次完成六项任务,并对任务的顺序提出了如下要求:重点任务A 必须排在前三位,且任务E 、F 必须排在一起,则这六项任务的不同安排方案共有( ) A . 240种 B . 188种 C . 156种 D . 120种 11.定义“有增有减”数列{}n a 如下: *t N ?∈,满足1t t a a +<,且*s N ?∈,满足1S S a a +>.已知“有增有

2017年度学科竞赛奖、科技竞赛奖评选方案

2017年度学科竞赛奖、科技竞赛奖评选方案 一、评选原则 1、学科竞赛奖、科技竞赛奖均为了鼓励广大同学通过积极参与各类赛事,提高自身素质,为校争光。 2、学科竞赛奖分为三个等级,一等奖3000元/人,二等奖2000元/人,三等奖1000元/人;科技竞赛奖分为三个等级,一等奖3000元/人,二等奖2000元/人,三等奖1000元/人。各个等级获奖人数按照当年参与竞赛的学生人数与获得奖励的质量确定。总获奖人数不超过总参赛人数的60%,总奖励金额均不超过20万元。 3、不能出现下列现象: A、某同学获得多个不同低赛事、低等级的竞赛奖,累加后得分相对较高,甚至高于某单个高赛事的得分。 B、某团队的成员在团队贡献上相对较低,但其单项得分与其他成员相同。 C、某团队的同一作品获得同一类型赛事奖励,在计算得分时出现累加情况。 D、非在校本科生参与评选。 二、各指标分值确定 1、影响因子 影响因子的确定两个部门比较一致,它与竞赛的名称有关,最高值为5分,以0.5分为刻度。以下为各个竞赛的影响因子:

2、等级分值 等级分值与竞赛级别和获奖等级均有关,最高值为100分,以

10分为刻度。以下为各个等级的分值: 3、作者排序 作者排序只与团队参与竞赛的作者排序有关,如提供作者排序的奖项,第一作者值为1,以后按照0.01的分值递减,即第二作者值为0.99,第三为0.98……

4、附加 获得不同竞赛奖励的同学,在累加得分时,减去附加值,附加值计算为:50*(获得竞赛奖励次数-1),如某同学获得3项奖励,则附加值为50*(3-1)=100。(因为竞赛最低得分不低于50分,故以50定为因子,若有竞赛得分低于50分,则直接取其竞赛项目最高分为最终得分)。 根据评选原则,为避免同一赛事相互累加,同一名同学在同一时间同一赛事不同项目获奖或者获得多个奖项,取该名同学在该赛事中获得的最高级奖项计算。

(完整版)高中数学排列组合习题精选

1、体育场南侧有4个大门,北侧有3个大门,某学生到该体育场练跑步,则他进出门的方案有( )种。 2、某公共汽车上有10名乘客,沿途有5个车站,乘客下车的可能方式有( )种 3、(1)4名同学选报跑步、跳高、跳远三个项目,每人报一项,共有多少种报名方法?(2)4名同学争夺跑步、跳高、跳远三项冠军(各项目冠军都只有一人),共有多少种可能的结果? 4、从集合{1,2,…,10}中任选出三个不同的数,使这三个数成等比数列,这样的等比数列的个数为() 5、有4位教师在同一年级的四个班中各教一个班的数学,在数学检测时要求每位教师不能在本班监考,则监考的方法有( )种。 A .8 B .9 C .10 D .11 6、3人玩传球游戏,由甲开始并做为第一次传球,经过4次传球后,球仍回到甲手中,有多少种不同的传球方式呢? 7、集合A ={a,b,c,d},B={1,2,3,4,5}。(1)从集合A 到集合B 可以建立多少个不同的映射?(2)从集合A 到集合B 的映射中,要求集合A 中元素的象不同,这样的映射有多少个 8、对一个各边长都不相等的凸五边形的各边进行染色,每条边都可以染红、黄、蓝三种不同的颜色,但是不允许相邻相邻的边染相同的颜色,则不同的染色方法共有( )种。 9、用5种不同颜色给图中的A 、B 、C 、D 四个区域涂色,规定一个区域只涂一种颜色,相邻的区域颜色不同,共有( )种不同的涂色方案。 10、将1,2,3填入3×3的方格中,要求每行、每列都没有重复数字,如图是一种填法,则不同的填写方法共有 A .6种 B .12种 C .24种 D .48种 11、如图所示的五个区域中,中心区域是一幅图画,现要求在其余四个区域中涂色,有四种颜色可供选择.要求每个区域只涂一种颜色,相邻区域所涂颜色不同,则不同的涂色方法种数为()A .64B .72C.84 D .96 12、(13山东)用0,1,…,9十个数字,可以组成有重复数字的三位数的个数为( ) A .243 B .252 C .261 D .279 13、(13福建)满足{},1,0,1,2a b ∈-,且关于x 的方程220ax x b ++=有实数解的有序数对(,)a b 的个数为( ) A .14 B .13 C .12 D .10 14、(16全国)定义“规范01数列”{a n }如下:{a n }共有2m 项,其中m 项为0,m 项为1,且对任意2k m ≤,12,,,k a a a L 中0的个数不少于1的个数。若m =4,则不同的“规范01数列”共有(A )18(B )16(C )14 (D )12

蓝桥杯比赛要求

七、奖项设置及评选办法 7.1 省赛 1.参赛选手奖 省赛每个组别设置一、二、三等奖,比例分别为10%、20%、30%,总比例为实际参赛人数的60%,零分卷不得奖。省赛一等奖选手获得直接进入全国总决赛资格。所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获奖证书。 2.指导教师奖 省赛中获奖的参赛选手的指导教师将获得“蓝桥杯全国软件和信息技术专业人才大赛(××赛区)优秀指导教师”称号。 3.参赛学校奖 参赛组织工作表现突出、经审批符合相关条件的单位,将获得“蓝桥杯全国软件和信息技术专业人才大赛(××赛区)优秀组织单位”称号; 参赛选手成绩优异,经审批符合相关条件的学校将获得“蓝桥杯全国软件和信息技术专业人才大赛(××赛区)优胜学校”称号。 7.2 总决赛 全国总决赛按参赛项目和成绩,为获奖学生、教师和组织单位颁发相应证书和奖 励。其中: 1.参赛选手奖 个人赛根据相应组别分别设立特、一、二、三等奖及优秀奖。在决赛奖项设置中, 每个组别设置特等奖1名,一等奖不高于5%,二等奖占20%,三等奖不低于25%,优秀奖 不超过50%,零分卷不得奖。 所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获 奖证书。 大学组总决赛三等奖及以上选手,如果获得本校免试推研资格,将获得北京大学软 件与微电子学院等院校的面试资格,并优先录取为该院普通硕士研究生。 大学组总决赛三等奖及以上选手,可免除笔试,直接获得百度、IBM等企业在员工 招聘及实习生招聘中的面试机会。 2.指导教师奖 所有获奖选手的指导教师,均可获得“蓝桥杯全国软件和信息技术专业人才大赛优秀 指导教师”证书。 3.参赛学校奖 参赛组织工作成绩突出、经审批符合相关条件的单位,获“蓝桥杯全国软件和信息技 术专业人才大赛优秀组织单位”称号; 参赛选手成绩优异、经审批符合相关条件的学校,获“蓝桥杯全国软件和信息技术专 业人才大赛优胜学校”称号。

第七届蓝桥杯C++程序设计大学B组省赛题目

第七届蓝桥杯程序设计大学B组省赛题目 第一题:煤球数目 有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 第二题:生日蜡烛 某君从某年开始每年都举办一次生日,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日的? 请填写他开始过生日的年龄数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 第三题:凑算式 B A + + = 10 C (如果显示有问题,可以参见【图1】) 这个算式中代表1~9的数字,不同的字母代表不同的数字。 比如: 6+8/3+952/714 就是一种解法, 5+3/1+972/486 是另一种解法。 这个算式一共有多少种解法?

注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。 第四题:快速排序 排序在各种场合经常被用到。 快速排序是十分常用的高效率的算法。 其思想是:先选一个“标尺”, 用它把整个队列过一遍筛子, 以保证:其左边的元素都不大于它,其右边的元素都不小于它。 这样,排序问题就被分割为两个子区间。 再分别对子区间排序就可以了。 下面的代码是一种实现,请分析并填写划线部分缺少的代码。 <> ( a[], i, j) { t = a[i]; a[i] = a[j]; a[j] = t; } ( a[], p, r) { i = p; j = r + 1; x = a[p]; (1){ (i

蓝桥杯比赛相关事项

蓝桥杯比赛相关事项 1.竞赛时间 省赛时长:4小时,6个组别同时进行。 决赛时长:4小时。决赛详细赛程安排另行通知。 详细赛程安排另行通知。 2.竞赛形式 个人赛。 一人一机,全程机考。 选手机器通过局域网连接到各个考场的竞赛服务器。选手答题过程中不允许访问互联网,也不允许使用本机以外的资源(如USB连接)。 以“服务器-浏览器”方式发放试题、回收选手答案。 3.c/c++ 语言开发环境: ·Dev-cpp 5.4.0 支持ANSI C,ANSIC++,STL ·c/c++ API 帮助文档(中文,chm格式) 4.试题形式 竞赛题目完全为客观题型。 根据选手所提交答案的测评结果为评分依据。 5.1.结果填空题 ·题目描述一个具有确定解的问题。要求选手对问题的解填空。 ·不要求解题过程,不限制解题手段(可以使用任何开发语言或工具,甚至是手工计算),只要求填写最终的结果。 5.2.代码填空题 ·题目描述一个具有确定解的问题。 ·题目同时给出该问题的某一解法的代码,但其中有缺失部分。 要求选手读懂代码逻辑,对其中的空缺部分补充代码,使整段代码完整。只填写空缺部分,不要填写完整句子。 不要写注释、说明或其它题目中未要求的内容。 5.3.编程大题 题目为若干具有一定难度梯度、分值不等的编程题目。 这些题目的要求明确、答案客观。 题目一般要用到标准输入和输出。要求选手通过编程,对给定的标准输入求解,并通过标准输出,按题目要求的格式输出解。题目一般会给出示例数据。 一般题目的难度主要集中于对算法的设计和逻辑的组织上。理论上,选手不可能通过猜测或其它非编程的手段获得问题的解。 选手给出的解法应具有普遍性,不能只适用于题目的示例数据(当然,至少应该适用于题目的示例数据)。 为了测试选手给出解法的性能,评分时用的测试用例可能包含大数据量的压力测试用例,选手选择算法时要尽可能考虑可行性的问题。

排列组合练习题及答案

排列组合习题精选 一、纯排列与组合问题: 1.从9人中选派2人参加某一活动,有多少种不同选法? 2.从9人中选派2人参加文艺活动,1人下乡演出,1人在本地演出,有多少种不同选派方法? 3. 现从男、女8名学生干部中选出2名男同学和1名女同学分别参加全校“资源”、“生态”和“环保”三个夏令营活动,已知共有90种不同的方案,那么男、女同学的人数是( ) A.男同学2人,女同学6人 B.男同学3人,女同学5人 C. 男同学5人,女同学3人 D. 男同学6人,女同学2人 4.一条铁路原有m 个车站,为了适应客运需要新增加n 个车站(n>1),则客运车票增加了58种(从甲站到乙站与乙站到甲站需要两种不同车票),那么原有的车站有 ( ) A.12个 B.13个 C.14个 D.15个 答案:1、2936C = 2、2972A = 3、选 B. 设男生n 人,则有2138390n n C C A -=。4、22 58m n m A A +-= 选C. 二、相邻问题: 1. A 、B 、C 、D 、E 五个人并排站成一列,若A 、B 必相邻,则有多少种不同排法? 2. 有8本不同的书, 其中3本不同的科技书,2本不同的文艺书,3本不同的体育书,将这 些书竖排在书架上,则科技书连在一起,文艺书也连在一起的不同排法种数为( ) A.720 B.1440 C.2880 D.3600 答案:1.242448A A = (2) 选B 3253251440A A A = 三、不相邻问题: 1.要排一个有4个歌唱节目和3个舞蹈节目的演出节目单,任何两个舞蹈节目都不相邻,有多少种不同排法? 2、1到7七个自然数组成一个没有重复数字的七位数,其中奇数不相邻的有多少个? 3.4名男生和4名女生站成一排,若要求男女相间,则不同的排法数有( )

第十届蓝桥杯全国软件和信息技术专业人才大赛

第十届蓝桥杯全国软件和信息技术专业人才大赛 报名指南 一、学生: 1.参赛学生须登录大赛官网https://www.wendangku.net/doc/055740325.html,完成如下报名流程(每个步骤不可省 略): (1)注册账号(已注册学生用原账号登录)。 (2)学籍身份认证(验证学生实名信息和所属院校信息)。 a) 学生实名认证信息包括:姓名、证件号码、2寸彩色证件照电子版(证件照如不规范将会审核失败,须重新上传)及身份证正反面照片;

b)学生填写所在院系认证:学校、学历、入学及毕业时间、所在院系以及学生证照片等;如学生教育经历发生变更,可以通过“添加更多教育经历”提交审核进行重新认证。

(3)选择报名科目和组别。 (4)选择院校缴费或个人缴费(如确定由院校组织报名和缴费的学生请选择院校缴费,学生相关报名信息将会出现在院校账号中,由院校老师统一完成后续筛选、报名及缴费工作。如学生不确定是否院校给统一报名缴费,请联系院校老师确认。如院校不统一组织报名或者未给学生报名,学生可选择个人报名并缴费,非211院校个人报名缴费功能将在院校报名工作完成后开放,预计在12月中旬开放,211院校不受此时间限制)。 (5)院校缴费/个人缴费成功后,学生报名工作完成。 (6)准考证下载(赛前一周可登录报名系统下载准考证并打印,按照准考证上的比赛时间和地点准时参加比赛)。 (7)奖项查询(赛后在报名系统内查询)。 2.证书申领:学生获奖后不仅将获得大赛获奖证书(不用申领),学生和其指导教师还 可自愿申领由工业和信息化部人才交流中心颁发的全国软件/电子行业人才证书,以及由IBM公司颁发的IBM国际认证证书,详情请登录大赛官网查询。 3.蓝桥招聘:依托于工业和信息化部人才交流中心,致力于打造以(专/本/硕/博)应 届高校毕业生为中心的专业互联网招聘平台,创新「人才经纪人」服务模式为每位求

相关文档
相关文档 最新文档