北京中关村;海淀黄庄;北京大学;清华大学。少儿编程;中小学编程;信息学竞赛;计算机竞赛;NOIP竞赛;CSP-J/S竞赛;NOI竞赛。1995年、提高组、复赛,第1届。
A、试题类型:
编码问题。
B、算法模型:
基本逻辑。
C、试题说明:
给出数组A求数组B的话,就是把数组A里的每个数据都和前面的数对比,如果大于前面的数计数器加一,最后把计数器的结果放到数组B中;
给出B数组来求A数组的话,就是把数组B里的每个数据都和前面的数对比(为了方便在代码里都是输入数组A,输出数组B),如果小于等于前面的数,前面的数加一。
#include <stdio.h>
int a[50]={0},b[50]={0};
int main()
{
char x;
int n,i,j,t,num_b=0;
scanf("%d",&n);
getchar();
scanf("%c=(",&x);
if(n!=0) scanf("%d",&t);
a[0]=t;
for(i=1;i<n;i++)
{
scanf(",%d",&t);
a[i]=t;
}
scanf(")");
if(x=='A'){
for(i=1;i<n;i++)
{
num_b=0;
for(j=0;j<i;j++)
{
if(a[i]>a[j]) num_b++;
}
b[i]=num_b;
}
printf("B=(%d",b[0]);
for(i=1;i<n;i++)
{
printf(",%d",b[i]);
}
printf(")");
}
if(x=='B')
{
for(i=1;i<n;i++)
{
b[i]=a[i];
for(j=0;j<i;j++)
{
if(b[i]<=b[j]) b[j]++;
}
}
printf("A=(%d",b[0]);
for(i=1;i<n;i++)
{
printf(",%d",b[i]);
}
printf(")");
}
return 0;
}
A、试题类型:
排列组合问题。
B、算法模型:
DFS。
C、试题说明:
首先可以将同种颜色的灯的个数化为1个,即n-m+1,灯颜色种数为m;
灯之间一定有m-1个空格且每个灯占用一个空格,则剩下s = n-2*m+1个空格;灯旁边有m+1个间隙;
可以考虑为s个空格插在m+1个间隙中,一个间隙可以插入0个,1个或多个空格,那么可以用DFS来遍历间隙即可。
上面的问题归结为数学模型:
将同一种颜色的灯归到一起,看成一个dfs出一种颜色顺序下的所有顺序;
再将它乘上N种颜色的排列数N!得到总排列数。
#include<iostream>
using namespace std;
int n,m,ans;
void DFS(int k,int sum);
int main()
{
while(cin>>n)
{
ans=m=0;
char c;
int x;
while(cin>>c&&c!='Q')
{
cin>>x;
n-=x-1; ++m;
cout<< "the total n is: "<<n<<endl;
}
int s=n-2*m+1,p=1;
cout<<"the empty place is: "<<s<<endl;
cout<<"the lamp has types is: "<<m<<endl;
for(int i=1;i<=m;++i)
p*=i; //m个种类的灯的全排列
m+=1;
DFS(1,s); //深度遍历求得m+1个间隙中插入最多S个空格的方案数
ans*=p;
cout<<ans<<endl;
}
return 0;
}
void DFS(int k,int sum)
{
cout<<"the k is :"<<k<<endl;
if(k==m||!sum)
{
++ans;
cout<<"the ans is:"<<ans<<endl;
return;
}
for(int i=0;i<=sum;++i)
{
DFS(k+1,sum-i);
cout<<"the i is:"<<i<<endl;
}
}
A、试题类型:
逻辑应用。
B、算法模型:
方程推导。
C、试题说明:
程序要求:给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据,输出整个完整的积木图。
第三层的数据是由第四层的数据用以下计算公式计算出来的:A = B * C + B。
也就是:8=2*3+2,15=3*4+3,……14=2*6+2
#include<stdio.h>
int main(){
int a[4][8]={{0},{0},{8,15,8,5,16,9,14},{2,3,4,1,4,3,2,6}};
for(int i=1;i>=0;i--){
for(int j=0;j<=i+6;j++){
a[i][j]=a[i+1][j]*a[i+1][j+1]+a[i+1][j];
}
}
for(int i=0;i<4;i++){
for(int x=3-i;x>=0;x--){
printf(" ");
}
for(int j=0;j<5+i;j++){
printf("%6d",a[i][j]);
}
puts("");
}
return 0;
}
IT航班支持----中小学编程比赛汇总:
第一部分:国内比赛(IT航班支持)
1、软件能力认证(CSP-JS)
2、全国青少年信息学奥林匹克联赛(NOIP)
3、全国青少年信息学奥林匹克竞赛(NOI)
4、中国青少年………………………
5、………………………创新挑战赛
6、全国青少年………………………
7、………………………
8、 恩欧希教育信息化发明创新奖
9、世界机器人大赛(WRC)
10、………………………大赛
11、少………………………智能教育成果展示大赛
12、“明天小小科学家”奖励活动
13、………………………
14、………………………
15、国际信息学………………………
16、………………………
第二部分:国际比赛(IT航班支持)
17、………………………
18、国际………………………
19、………………………
20、美国信息学………………………
21、加拿大………………………
22、官方邀请赛 (CCO)
23、国际计算思维………………………
24、美国计算机………………………
25、澳大利亚………………………
第三部分:企业比赛(IT航班支持)
26、微软MTA
27、………………………挑战赛
28、………………………科学奖
29、………………………学奖
30、………………………创新挑战赛
31、………………………挑战赛
32、………………………芯计算机表演赛
33、………………………大赛
第四部分:Scratch相关竞赛(IT航班支持)
34、全国中小学生电脑制作大赛
35、………………………
36、………………………
37、………………………
第五部分:其它(IT航班支持)
38、NOI夏令营
39、NOI冬令营(NOIWC)
40、全国青少年………………………
41、国际青少年………………………
联系方式:
A、官方网址:
B、微信公众号:
添加微信,获取资料。
关注公众号,获取动态。