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_OC11 小时前
LC 128 最长连续序列:别上来就排序,O (n) 解法才是这题的灵魂
javascript·算法·leetcode
05Kevin1 天前
lk每日冒险题--数据结构6.27
算法
To_OC1 天前
从一次栈溢出报错说起,我把递归彻底扒明白了
javascript·算法·程序员
千纸鹤安安2 天前
千问Qwen-AgentWorld来了:一个语言模型搞定七大Agent场景,GPT-5.4都输了
算法
七牛开发者2 天前
MCP 到底是什么?为什么 Agent 都想接上它
算法·aigc·agent
kisshyshy2 天前
从递归到迭代,一文吃透二叉树的核心知识与 JavaScript 实现
javascript·算法·代码规范
To_OC2 天前
LC 49 字母异位词分组:想到哈希表很简单,选对 key 才是精髓
javascript·算法·leetcode