CCF CSP 2018.03:序列处理与模拟题C++满分代码解析
需积分: 45 110 浏览量
更新于2024-09-08
收藏 72KB DOCX 举报
本资源提供的是CCF CSP软件能力认证2018年3月第13次考试的两道题目及其解析和100分的C++代码实现。第一题名为“跳一跳”,考察序列处理能力。题目要求处理一个输入序列,其中的数字代表分数,当连续得分2分时加分规则为每次加2分,得1分时不加分。核心代码通过`scanf`读取输入,累计分数并根据规则调整加分状态。
```cpp
#include<iostream>
using namespace std;
int main()
{
int a, sum = 0, plus = 0;
while (scanf("%d", &a) != EOF && a)
{
sum += a;
if (a == 1)
plus = 0;
else if (a == 2)
{
sum += plus;
plus += 2;
}
}
printf("%d\n", sum);
return 0;
}
```
第二题是“碰撞的小球”,模拟题目,需要按照时间序列模拟小球的运动,判断小球是否相撞并调整方向。提供了两种解法:一种是不排序的暴力法,使用数组`pos`和`step`记录小球位置和运动方向;另一种是结构数组法,通过排序简化处理。暴力法的核心代码如下:
```cpp
#include<iostream>
using namespace std;
const int L = 1000;
int pos[L + 1], step[L + 1];
int main()
{
int n, l, t;
cin >> n >> l >> t;
for (int i = 0; i < n; i++)
{
cin >> pos[i];
// 其他代码处理小球移动和碰撞检测
}
// ...模拟过程
return 0;
}
```
总结来说,这两道题目都是对基础编程技能的考察,特别是输入处理、循环控制和数组操作,同时也涉及到了模拟算法和优化技巧。通过解答这些题目,考生可以提升对C++语言的理解,以及在实际编程中处理类似问题的能力。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-06-04 上传
2019-06-04 上传
2019-06-04 上传
2019-06-04 上传
2019-06-04 上传
2019-06-04 上传
qq_40186640
- 粉丝: 2
- 资源: 31