sistema de gestión de bibliotecas ejercicio 5_8 uva230 (pequeña analógica)

Este es el principal problema en la comunicación en varios puntos de la línea
en primer lugar es el stock de libros y nombres, y luego dividir la cadena que?
Punta en el libro sin las comillas dobles así que el título se puede determinar mediante el cálculo del número de comillas dobles,
mientras que los nombres no son sólo después de "por", entonces el juez apareció "por" no es suficiente? No, porque el título puede aparecer por!
Así que junto con una serie de comillas dobles como condición 2, es único!
Lo siguiente es la simulación de gestión, diferentes títulos, podemos afirmar con una tienda de mapas libro! Por supuesto, el tipo es esencial
a continuación, para cada salida de
primera marca sólo si se ha producido en la línea, entonces este no es el primero en frente de cada tienda por la forma en que el libro no es lo suficientemente bueno? Tenga en cuenta que después de depositar en el estado han cambiado
nada de la barra de
código en

#include <bits/stdc++.h>
using namespace std;
struct stu{
	string name;
	string book;
	bool operator < (const stu b) const
	{
		if(this->name == b.name) return this->book < b.book;
		return this->name < b.name;
	} 
}q;
vector <stu> jia;
map<string,int> f; // 1 为存着 -1 借出   0 窝着等待拯救
int main()
{
	string s,ss;
	while(getline(cin,s)) 
	{
		if(s=="END") break;
		int n = s.size(),yin = 0;
		for (int i = 0; i < n ; i++)
		{
			if(s[i]=='"') yin++;
			if(yin == 2)
			{
				q.book = s.substr(0,i+1);
				yin++; // 保证之进来一次 
			}
			if(s.substr(i,2) == "by" && yin >= 2) 
			{
				q.name = s.substr(i+3,n-i-3);
				break;
			}
		} 
		//cout<<endl<<q.book<<"  "<<q.name<<endl;
		f[q.book] = 1;
		jia.push_back(q); 
	}
	int n = jia.size();
	sort(jia.begin(),jia.end()); 
	// 初始化完成 
	while  (getline (cin,s))
	{
		int len = s.size();
		if(s[0]=='B')
		{
			ss = s.substr(7,len-7);
			f[ss] = -1;
			
		}
		else if(s[0]=='R')
		{
			ss = s.substr(7,len-7);
			f[ss] = 0;
		}
		else if(s[0]=='S')
		{
			int qian = 0,kk = 0;//qian 前面的书 kk表示是否有了第一本 
			for (int i = 0 ; i < n; i++)
			{
				ss = jia[i].book;
				if(f[ss] == 1 ) 
				{
					qian = i; kk = 1;
				}
				else	if(f[ss] == 0) 
				{
					if(!kk)  
					{
						kk = 1; f[ss] = 1; qian = i; 
						cout<<"Put "<<ss<<" first"<<endl;
					}
					else
					{
						f[ss] = 1; 
						cout<<"Put "<<ss<<" after "<<jia[qian].book<<endl;
						qian = i;
					}
				}
			}
			cout<<"END"<<endl;
		}
		else break; 	
	}
	return 0;
} 
Publicado 55 artículos originales · ganado elogios 1 · vistas 2654

Supongo que te gusta

Origin blog.csdn.net/qq_37548017/article/details/100098665
Recomendado
Clasificación