2013年蓝桥杯A组真题 1.错误票据 知识点:输入问题

题目:1.错误票据 - 蓝桥云课 (lanqiao.cn)

解析:2013年c++A组题7_哔哩哔哩_bilibili

这道题问题倒不是很难,但是输入输出比较麻烦:

js 复制代码
#include<bits/stdc++.h>
using namespace std;

vector<int>v; 
map<int,int>m;
int a[1005];

void s2i(string &temp,int &a)
{
	stringstream ss;
	ss<<temp;
	ss>>a;
}
int main()
{
    int line;cin>>line;getchar(); 
    
    int index=0;
	for(int i=0;i<line;i++)
	{
       string x;
		getline(cin,x);
		
		//拆分
		istringstream ss(x); 
		string temp;
	    while(getline(ss,temp,' ')) 
	    {
	        s2i(temp,a[index++]);
		}
	 
	 } 
	
		for(int i=1;i<index;i++)
		{
			if(a[i]==a[i-1]+2)printf("%d ",a[i]-1);
			
			if(a[i]==a[i-1])printf("%d",a[i]);
		}
	 
	 
	
	 
	return 0;
}

最后要排序,不排序就错了。这是没排序的:

原因:

没有排序时的数组a:

当遍历到ai-1=12,ai=10的时候,因为差值为2,又输出了ai-1,即11.

因此我们需要排序:

排完序的:

看答案没毛病,但是实际上还有一点小问题,就是假如我们在遍历的工程中先遇到重复的就直接输出了,但是题目要求一定要先输出断号的再输出重复的,因此我们需要用两个变量来保存一下,最后输出变量:

js 复制代码
#include<bits/stdc++.h>
using namespace std;


int a[10005];

void s2i(string &temp,int &a)
{
	stringstream ss;
	ss<<temp;
	ss>>a;
}
int main()
{
    int line;cin>>line;getchar(); 
    
    int index=0;
	for(int i=0;i<line;i++)
	{
       string x;
		getline(cin,x);
		
		//拆分
		istringstream ss(x); 
		string temp;
	    while(getline(ss,temp,' ')) 
	    {
	        s2i(temp,a[index++]);
		}
	 
	 } 
	 
     //cout<<index<<endl;  检查输入的数据个数 
     
	 int duanhao,chongfu;
	  sort(a,a+index);
		for(int i=1;i<index;i++)
		{
			if(a[i]==a[i-1]+2) duanhao=a[i]-1;
			
			if(a[i]==a[i-1])   chongfu=a[i];
		}
	 
	 printf("%d %d",duanhao,chongfu);

	 
	return 0;
}
相关推荐
To_OC1 小时前
LC 239 滑动窗口最大值:从暴力超时到单调队列一遍过
javascript·算法·leetcode
.道阻且长.2 小时前
9.LeetCode算法习题讲解--滑动窗口--无重复字符的最长字串
算法·leetcode·职场和发展·哈希算法
ltl3 小时前
HNSW:图索引如何击败树索引
算法
曹牧5 小时前
C#:数字的定义和表示方式
算法·c#
Nil2085 小时前
leetcode 138随机链表的复制
算法·leetcode·链表
疯狂打码的少年7 小时前
【数据结构】图的遍历:深度优先搜索(DFS)
数据结构·笔记·算法·深度优先
-凌凌漆-8 小时前
【freertos】Task创建(v2)
java·开发语言·算法
Nil2088 小时前
leetcode 24两两交换链表中的节点
算法·leetcode·链表
.格子衫.8 小时前
033动态规划之状态压缩DP——算法备赛
算法·动态规划