2023.09全国青少年软件编程(C语言)等级考试试卷(四级)

标签:
普通文字版答案
2024-07-03
| 7页
| 40人阅读
| 0人下载

内容正文:

青少年软件编程(C语言)等级考试试卷(四级) 分数:100 题数:4 一、编程题(共4题,共100分) 1. 酒鬼 酒鬼 Santo刚刚与房东打赌赢得了一间在New Clondike 的大客厅。今天,他来到这个大客厅欣赏他的奖品。房东摆出了一行瓶子在酒吧上。瓶子里都装有不同体积的酒。令Santo高兴的是,瓶子中的酒都有不同的味道。房东说道:“你可以喝尽可能多的酒,但是一旦打开酒盖你就必须把它喝完,喝完一瓶后把它放回原处。还有一件最重要的事,你必须从左至右依次喝,并且不能连续超过三瓶,不然会给你带来坏运气。”现在可怜的Santo站在酒吧前努力的想着,他到底应该喝哪几瓶才能使喝的酒最多呢?请帮助他找出他应该喝的酒瓶号,因为思考让他感到不安。 时间限制:2000 内存限制:131072 输入 第一行一个整数N,有N个酒瓶。N<=700接下有N行,第I+1行的数字代表酒瓶I中酒的体积。 输出 一个数字,喝的酒的最大总体积。遵守以上规则,使得三个连续瓶子中至少一个瓶子是满的。 样例输入 6 6 10 13 9 8 1 样例输出 33 试题编号:20230909-4-01 试题类型:编程题 标准答案: 试题难度:一般 试题解析: 展示地址:点击浏览 考生答案: #include<bits/stdc++.h> using namespace std; int f[701][5]; int main(){ int n; int a[1000]; cin>>n; for(int i = 1;i<=n;i++){ cin>>a[i]; } for(int i = 1;i<=n;i++){ f[i][0] = f[i-1][3]; int mx = f[i][0]; for(int j = 1;j<=2;j++){ f[i][j] = f[i-1][j-1]+a[i]; mx = max(mx,f[i][j]); } f[i][3] = mx; } cout<<f[n][3]; } 考生得分:25 是否评分:已评分 评价描述: 2. 大盗阿福 大盗 阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。 这条街上一共有 N 家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。 作为一向谨慎作案的大盗,阿福不愿意冒着被警察追捕的风险行窃。他想知道,在不惊动警察的情况下,他今晚最多可以得到多少现金? 时间限制:1000 内存限制:65536 输入 输入的第一行是一个整数 T (T <= 50) ,表示一共有 T 组数据。 接下来的每组数据,第一行是一个整数 N (1 <= N <= 100, 000) ,表示一共有 N 家店铺。第二行是 N 个被空格分开的正整数,表示每一家店铺中的现金数量。每家店铺中的现金数量均不超过 1000 。 输出 对于每组数据,输出一行。该行包含一个整数,表示阿福在不惊动警察的情况下可以得到的现金数量。 样例输入 2 3 1 8 2 4 10 7 6 14 样例输出 8 24 提示 对于第一组样例,阿福选择第 2 家店铺行窃,获得的现金数量为 8 。 对于第二组样例,阿福选择第 1 和 4 家店铺行窃,获得的现金数量为 10 + 14 = 24 。 试题编号:20230909-4-02 试题类型:编程题 标准答案: 试题难度:一般 试题解析: 展示地址:点击浏览 考生答案: #include <iostream> #include <cstdio> using namespace std; const int N = 100010, INF = 0x3f3f3f3f; int w[N], f[N][2]; int main() { int t; cin >> t; while(t--) { int n; cin >> n; for(int i = 1; i <= n; i ++) scanf("%d", &w[i]); f[0][0] = 0, f[0][1] = -INF; for(int i = 1; i <= n; i ++) { f[i][0] = max(f[i - 1][0], f[i - 1][1]); f[i][1] = f[i - 1][0] + w[i]; } printf("%d ", max(f[n][0], f[n][1])); } return 0; } 考生得分:25 是否评分:已评分 评价描述: 3. 核电站 核电站 一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质。 任务:对于给定的N和M,求不发生爆炸的放置核物质的方案总数 时间限制:6000 内存限制:131072 输入 只一行,两个正整数N,M( 1 < N < 50,2 ≤ M ≤ 5 ) 输出 一个正整数S,表示方案总数。 样例输入 4 3 样例输出 13 试题编号:20230909-4-03 试题类型:编程题 标准答案: 试题难度:一般 试题解析: 展示地址:点击浏览 考生答案: #include <bits/stdc++.h> using namespace std; int n,m; long long dp[100]; int main(){ cin>>n>>m; dp[0]=1; for(int i=1;i<=n;i++){ if(i<m){ dp[i]=dp[i-1]*2; }else if(i==m){ dp[i]=dp[i-1]*2-1; }else{ dp[i]=dp[i-1]*2-dp[i-m-1]; } } cout<<dp[n]<<endl; return 0; } 考生得分:25 是否评分:已评分 评价描述: 4. 盒子与小球之二 盒子与小球之二 N个有差别的盒子(1<=N<=20)。你有A个红球和B个蓝球。0 <= A <= 15, 0 <= B <= 15。球除了颜色没有任何区别。你可以将球放进盒子。一个盒子可以同时放进两种球,也可以只放一种,也可以空着。球不必全部放入盒子中。编程计算有多少种放置球的方法。 时间限制:10000 内存限制:131072 输入 就一行,N,A,B,用空格分开 输出 就一行,输出放置方案总数 样例输入 2 1 1 样例输出 9 试题编号:20230909-4-04 试题类型:编程题 标准答案: 试题难度:一般 试题解析: 展示地址:点击浏览 考生答案: #include<iostream>//f[N][A]=sum(F[N-1][k]),0<=k<=A #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> using namespace std; typedef unsigned long long LL; LL F[25][20]; int main(){ int N,A,B; scanf("%d%d%d",&N,&A,&B); for(int i=0; i<=N; ++i) F[i][0]=1; for(int i=0; i<=A||i<=B; ++i) F[0][i]=1; for(int i=1; i<=N; ++i) for(int j=1; j<=A || j<=B; ++j) for(int k=0; k<=j; ++k) F[i][j]+=F[i-1][k]; cout<<F[N][A]*F[N][B]<<endl; return 0; } 考生得分:25 是否评分:已评分 评价描述: 学科网(北京)股份有限公司 $$

资源预览图

2023.09全国青少年软件编程(C语言)等级考试试卷(四级)
1
2023.09全国青少年软件编程(C语言)等级考试试卷(四级)
2
2023.09全国青少年软件编程(C语言)等级考试试卷(四级)
3
所属专辑
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。