2017年蓝桥杯省赛 1.兴趣小组 知识点:文件读入 set

116 阅读1分钟

题目:1.兴趣小组 - 蓝桥云课 (lanqiao.cn)

解析 2017-C-C题2兴趣小组_哔哩哔哩_bilibili

思想

按照歪歪的提示,我们这道题用集合来解, 一个set就是一个集合 用3个set,首先判断第二个set如果可以找到第一个set里的内容,并且第三个set找不到第一个set里面的内容,就用计数器统计一下。

#include<bits/stdc++.h>
#include<fstream>
using namespace std;
set<string>A,B,C;

void read(set<string>& a,char* path)
{
	ifstream fin;
	fin.open(path,ios_base::in);
	
	while(!fin.eof())  //end of file 
   {
        string s;
		fin>>s;  //从字符串里读取内容 
		
		if(s.length()>0) //防止读入空字符串
		{
		  a.insert(s);	
		}   	
   }
	fin.close();
}
int main()
{
	int ans=0;
	
	read(A,"D:\\devc++工程\\A.txt"); 
    read(B,"D:\\devc++工程\\B.txt"); 
	read(C,"D:\\devc++工程\\C.txt"); 
	
	//验证是否读取成功 
    //cout<<A.size()<<endl;
    //cout<<B.size()<<endl;
    //cout<<C.size()<<endl;
    
	set<string>::iterator itA=A.begin();
    
    while(itA!=A.end())
    {
    	if(B.find(*itA)!=B.end()&&C.find(*itA)==C.end())
        {
        	ans++;
		}	
		itA++;
	}
	
	cout<<ans<<endl; 


return 0;
}

运行结果

image.png

通过 image.png