网站怎么更新文章,浙江省建筑信息港官网,网站做零售,深圳建站公司模板题目#xff1a;
1204. 错误票据 - AcWing题库 思路#xff1a;
将输入的数据存入数组#xff0c;从小到大排序后遍历#xff0c;若 (a[i] a[i - 1])res1 a[i]---重号;若(a[i] - a[i - 1] 2)res2 a[i] - 1---断号。
难点#xff1a;题目只告诉我们输入…题目
1204. 错误票据 - AcWing题库 思路
将输入的数据存入数组从小到大排序后遍历若 (a[i] a[i - 1])res1 a[i]---重号;若(a[i] - a[i - 1] 2)res2 a[i] - 1---断号。
难点题目只告诉我们输入几行且并不知道每行有多少个因此无法直接将输入数据存入定义好的连续数组。cin无法处理换行符
1.针对上述情况我们可以先用getline(cin,line)将整行数据包括空格先存入字符串string变量中。再定义字符串流stringstream对象ssin,并将前面读取的line传递给它。
这样你可以使用ssin来解析和操作字符串中的数据。接下来的循环while (ssin a[n])n;在每次循环中从ssin中读取一个整数并保存到数组a中。字符串中的空格也就不会进入数组a[]
代码 #includeiostream
#includesstream//字符串流头文件
#includealgorithm
#includestring
using namespace std;
int n;//表示ID号码数量
const int N 10010;
int a[N];
int main()
{int cnt;//表示行数cin cnt;string line;getline(cin, line);//忽略掉第一行的回车while (cnt--) {getline(cin, line);//读入一行数据存入linestringstream ssin(line);//定义一个字符串流对象ssin初始化为linewhile (ssin a[n])n;//这里的ssin会将其中的整数传出且不会将空格传入数组a[]中}sort(a, a n);int res1, res2;for (int i 1; i n; i)if (a[i] a[i - 1])res1 a[i];//重号else if (a[i] - a[i - 1] 2)res2 a[i] - 1;//断号cout res2 res1;}
特别注意
使用getline读入一整行时如果之前写过cin由于cin中有默认换行getline会将其也读入使得字符串类型的变量line的第一个元素是空的。因此我们需要在读入之前先getline(cin, line)---忽略掉第一行的回车。不要问为什么这样写c爸爸规定滴