【2021天梯赛题解1】是2021年4月30日举办的一场编程竞赛的题目解析,由赵长乐和王小川进行了解析。本文将详细探讨其中涉及的几个编程知识点。 ### L1-3 强迫症 此题目的关键是将一个六位数的年份格式化为"YYYY-MM"的形式。在输入时,可以以字符串或整数格式读取。一种解法是先以字符串格式读入,再处理前导零的情况。例如: ```cpp #include<iostream> using namespace std; int main(){ string str; cin >> str; // ... } ``` 另一种简洁的方法是以数字格式读入,利用C++标准库的功能简化代码。例如: ```cpp #include<iostream> using namespace std; int main(){ int a; cin >> a; // ... } ``` ### L1-6 吉老师的回归 此题考察的是字符串操作,特别是`find`函数的使用。题目要求找出不包含特定子串(如"qiandao"或"easy")的行,并进行计数。关键在于正确理解和使用`find`函数,以及处理特殊情况。例如: ```cpp if (str.find("qiandao") == string::npos && str.find("easy") == string::npos) ``` ### L1-7 天梯赛的善良 本题考察了如何使用`map`数据结构。题目要求统计每个整数出现的次数,并找出出现次数最少和最多的数。使用`map`可以方便地存储和更新每个数的出现次数,同时可以轻松获取最小和最大值。例如: ```cpp map<int, int> m; //... m[x]++; //... auto minn = m.begin(), maxx = --m.end(); cout << minn->first << " " << minn->second << endl; cout << maxx->first << " " << maxx->second << endl; ``` ### L1-8 乘法口诀数列 这道题涉及到了数学和数组操作。题目要求根据乘法口诀生成一个数组,其中元素为两数相乘的结果。由于结果可能是一个两位数,需要特别处理。可以使用双指针算法来实现。例如: ```cpp int p = 3; for(int i = 1; p <= n; ++i){ int t = a[i] * a[i + 1]; if(t >= 10){ a[p++] = t / 10; a[p++] = t % 10; }else{ a[p++] = t; } } ``` ### L2-1 包装机 该题考察了模拟问题的解决,可能需要使用到栈或队列的概念。题目是关于包装物品,需要根据物品的尺寸创建合适的包裹。解决方案可能是动态规划或模拟。例如: ```cpp for(int i = 1; p <= n; ++i){ int t = a[i] * a[i + 1]; //... } ``` 以上就是对这些题目涉及知识点的详细解读,每一道题都展示了不同的编程技巧和思维方式,对于提升编程能力非常有帮助。
剩余19页未读,继续阅读
- 粉丝: 855
- 资源: 316
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助