ACM 模式
ACM 模式是一种需要自行处理输入输出的做题模式。
1. 输入输出处理
1.1 固定式输入分析
1)第一行输入三个数 x, y, z
long long x, y, z; cin >> x >> y >> z;
2)前两行分别是整数 x, y
long long x, y; cin >> x >> y;
3)第一行一个整数 n,第二行输入 n 个整数
int n; cin >> n; vector<int> arr(n); for (int i = 0; i < n; i++) cin >> arr[i];
1.2 不定式输入分析
string line;
while (getline(cin, line)) {
stringstream ss(line);
int num;
while (ss >> num) {
// 处理数字
}
}
getline 会从输入里读一整行(直到换行符)。读到文件结束 EOF 返回 false,循环结束。
stringstream 把字符串变成可像 cin 一样读的流,之后可以用 ss >> num 解析行内的数字。
2. 输出分析
注意末尾,保证末尾没有空格或其他字符,否则可能出错。
3. OJ 常见错误
需仔细检查边界条件和格式要求。
4. 面试中的 ACM 模式考察
记得把样例写出来,面试官就看你样例的输出。核心代码与输入输出分离,结构要清晰。
5. 万能头文件
#include <bits/stdc++.h> 是 GCC 编译器套件中一个非标准的头文件,包含了 C++ 标准库中几乎所有的头文件。只要包含了这一个文件,就可以使用大部分 C++ 标准库的功能。
6. 常用数据结构模板
6.1 数组的读入
题目内容:给定一个整数数组 nums,求解数组的和。 输入共两行。第一行为一个整数 n,代表数组 nums 的长度。第二行为 n 个整数,即数组的元素。输出数组的和。
#include <bits/stdc++.h>
using std;
{
sum = ;
( i = ; i < nums.(); i++) {
sum += nums[i];
}
sum;
}
{
n; cin >> n;
;
( i = ; i < n; i++) cin >> nums[i];
cout << (nums) << endl;
;
}

