2020年华科计算机考研机试题答案(没弄懂题目的意思)

2020年华科研究生复试机试题,包含测试数据和题目,里面是文档和要所报文件。供考研学子学习使用。此数据量有点大,涉及到链表,数据转换,和容器。以下代码都是我写的,欢迎交流。原题目和测试文档链接地址是[https://download.csdn.net/download/qq_41476542/12415227]。供需要测试的人使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入代码片
// HK2020ProAndAns.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <iostream>
#include <fstream>
#include <string>
#include <limits.h>
#include <windows.h>
#include <VECTOR>
#include <list>
using namespace std;

struct points
{
    int xuhao;用于最终得出结果
    int inumber;
	int Ep[200];
	vector<int> vetoreverypoint;用于存每一个数值
};
vector<points> vecP;
vector<int> vecPlastselect;
typedef list <int> intList;
unsigned int iLinenumber=0;有多少个集合
unsigned int iAllPoint=0;有多少个元素


int  IAllpoint[2000000][200];///二维数组用于表示所有的点(不能放进函数中定义,否则内存不够)
int  IAllnuber[2000000];
int  Itemp=0;///临时变量
void CharToInt(char *Intput,unsigned int * OutPut)
{
 sscanf((LPSTR)(LPCTSTR)Intput,"%d",&OutPut);
}
void selectjiHe( vector<points> vecP)
{
	int selectstart=0;
	int selectCharstart=0;
      Itemp=vecP.size();

	int selectPoint=1,sj=0;
	while(true)
	{
		    Itemp=vecP[selectstart].vetoreverypoint[selectCharstart];
			Itemp=vecP[selectPoint].vetoreverypoint[sj];

			if (vecP[selectstart].vetoreverypoint[selectCharstart]!=vecP[selectPoint].vetoreverypoint[sj])
			{
                 Itemp=vecP[selectPoint].vetoreverypoint.size();
				if (selectPoint<iLinenumber&&sj==Itemp)
				{
					 sj=0;
                     selectPoint++;
				}
				else if (selectPoint<iLinenumber&&sj<Itemp)
				{
                      sj++;
				}
				else if(selectPoint>iLinenumber)
				{
                      cout<<"留下集合%d"<<selectPoint<<endl;
				}
                 
			}
			else
			{

				Itemp=vecP[selectstart].vetoreverypoint.size();
				if (selectstart<iLinenumber&&selectCharstart>=Itemp)
				{
                       selectstart++;
				}
				else if (selectstart<iLinenumber&&selectCharstart<Itemp)
				{
					selectCharstart++;
				}
				else if (selectstart>iLinenumber)
				{
                          break;
				}
		
                  
			}

			
	 }

	            
}
void tanxinselect(vector<points> vecP)
{

	//vecPlastselect=vecP;

   Itemp=vecP.size();
   points tempTaget;
   intList _intList;
   int ijiheveceornumber=0;
   int IRecordBkPoint=0;///记录断点位置

//	for (int i=0;i<Itemp-1;i++)
//	{
//		for (int paixuj=0;paixuj<Itemp-1-i;paixuj++)
//		{
//			if (vecP[paixuj].inumber<=vecP[paixuj+1].inumber)
//			{
//				tempTaget=vecP[paixuj];
//				vecP[paixuj]=vecP[paixuj+1];
//				vecP[paixuj+1]=tempTaget;
//				cout<<"paixuj"<<paixuj<<endl;
//			}
//			
//		}
//			cout<<"i="<<i<<endl;
//	}
	往list容器里面存数据
	for(int j=0;j<iAllPoint;j++)
	{
        _intList.push_back(j);
	}
	for(int vj=0;vj<iAllPoint;vj++)
	{
        vecPlastselect.push_back(vj);
	}
	
	int bkLargeTosmall=0;///记录从大道小的擦除地方
	int ivecp=0;
	list<int>::reverse_iterator Iter;
	intList::iterator iter_e;
	  int vetlarg=vecPlastselect.size();
	for (int n=0;n<Itemp;n++)
	{
			int sizetrmp=_intList.size();
			if (sizetrmp==0)
			{
                bkLargeTosmall=n;
				break;
			}
			if (vecPlastselect.size()==0)
			{
	                  bkLargeTosmall=n;
			 }
				  
		cout<<"留下的元素为"<<n<<endl;
		cout<<"容器大小为"<<vecPlastselect.size()<<endl;

	    if (vecPlastselect.size()==0)
		{
            bkLargeTosmall=n;

             break;
		}
		else
		{
			int iitemp;
			int num=vecP[n].inumber;
			for (int mv=0;mv<num;mv++)
			{
		       	sizetrmp=_intList.size();
				int jjt=0;
				bkLargeTosmall=n ;
				int ite=0;
//							for (iter_e=_intList.begin();iter_e!=_intList.end();iter_e++)
//							{
//								iitemp=vecP[n].vetoreverypoint[mv];
//								ite=*iter_e;
//								cout<<"*iter_e为"<<*iter_e<<endl;
//								if(iitemp == *iter_e)
//								{
//					
//									//_intList.erase(iter_e);
//									_intList.remove(iitemp);
//									sizetrmp=_intList.size();
//
//									break;
//										bkLargeTosmall=n;
//									iter_e=_intList.begin();
//							
//								}	
//								
//							}	
						///
//						for (Iter=_intList.rbegin();Iter!=_intList.rend();Iter++ )
//						{
//							iitemp=vecP[mv].vetoreverypoint[jjt];
//							if(iitemp == *Iter)
//							{
//							   //	_intList.erase((Iter).base());
//								cout<<"*iter_e为"<<*Iter<<endl;
//								list<int>::iterator iter = _intList.erase((++Iter).base());
//								Iter = list<int>::reverse_iterator(iter);
//							
//								
//							}	
//			
//						}	
                  ite=0;
				  if (vecPlastselect.size()==0)
				  {
	                  bkLargeTosmall=n;
				  }

				  iitemp=vecP[n].vetoreverypoint[mv];
                  for (int vpi=0;vpi<vecPlastselect.size();vpi++)
                  {
	                      
						   	if(iitemp ==vecPlastselect[vpi] )
							{
								ite++;
					             vecPlastselect.erase(vecPlastselect.begin()+vpi);
								 break;
							}	
                  }
			}
			
            
		}
	}
	int Iputpoint;
    
    for(int bk=0;bk<bkLargeTosmall;bk++)
	{
         Iputpoint=vecP[bk].xuhao;
		 cout<<"留下的元素为"<<Iputpoint<<endl;
	}
}

int main()
{
	string str;//利用string来接受读入的源代码
	points vectorPoint;
	ifstream file("D:\\我的文档\\WeChat Files\\xpj13098878561\\FileStorage\\File\\2020-05\\计算机专业实践考核\\SetCoveringTestData\\test01.txt");
	int Itempshuzu[200];
	int cnt = 1;//记录当前行号
	if (!file.is_open())
	{
		cout << "文件打开失败!" << endl;
	}
	string Lineone="";//取第一行数据确定用多少个数组
	char Ctemp[1000];//用于临时存储数据
	
	getline(file, Lineone);
	char ClineNumber[10]={0};
	char AllPoint[10]={0};
	int Onebk=0;
	int j=0;
	for ( j=0;j<50;j++)
	{
		
		if (Lineone[j]==' ')
		{
			Onebk=j;
			break;
		}
		else
		{
		
			ClineNumber[j]=Lineone[j];
		}
	}
	Itemp=0;
	for ( j=Onebk+1;j<50;j++)
	{
		
		if (Lineone[j]=='\n'||Lineone[j]==' '||Lineone[j]=='\0')
		{
			break;
		}
		else
		{
	        AllPoint[Itemp]=Lineone[j];
			Itemp++;
		}

	}



	sscanf((LPSTR)(LPCTSTR)ClineNumber,"%d",&iLinenumber);
	sscanf((LPSTR)(LPCTSTR)AllPoint,"%d",&iAllPoint);
	//
	string strTempnumber="";
	int number=0;
	//strTempnumber.Format("%d",number);
	int everyLinenumber=0;//每个集合元素个数
    int Linelength=0;//用于表示每行的长度

	int acm=10;
//	int smal[acm];
//	int  IAllpoint[100][200];///二维数组用于表示所有的点
	int  IEPTP=0;//每个元素存储的位置去存进二维数组中
	int tln=0;//用于给char赋值,表示赋值过程中的位置
	int Icen;//用于隔开每个点的字符串
	int IGetPointNumber=0;//用于表示获取到的集合的数量
//	int ll=1;
	int oneJihePoint=0;//一个集合的点数
	int INumbertimes=0;///用于存放数量的个数
	
	for(int ll=1;ll<iLinenumber*3+1;ll++)
	{
        getline(file, str);
		if (ll%2==0)
		{
		    Linelength=sizeof(str);
			memset(Ctemp,0,1000);
			
			for(tln=0;tln<Linelength;tln++)
			{
                    Ctemp[tln]=str[tln];
			}
           sscanf((LPSTR)(LPCTSTR)Ctemp,"%d",&everyLinenumber);
		   IAllnuber[INumbertimes]=everyLinenumber;
		   INumbertimes++;		   
		}
		if (ll%3==0)
		{
			IEPTP=0;
			Icen=0;
		    Linelength=str.length();
			memset(Ctemp,0,1000);
			
			for(tln=0;tln<Linelength;tln++)
			{
					if (str[tln]==' ')
					{
                         sscanf((LPSTR)(LPCTSTR)Ctemp,"%d",&Itemp);
						 IAllpoint[IGetPointNumber][IEPTP]=Itemp;	
						 vectorPoint.xuhao=IGetPointNumber;
						 vectorPoint.vetoreverypoint.push_back(Itemp);
						 vectorPoint.inumber=everyLinenumber;
						 
						 Icen=0;
						 IEPTP++;
					}
					else
					{
                         Ctemp[Icen]=str[tln];
						 Icen++;
					}
			}
			vecP.push_back(vectorPoint);
		}

	
		//cout<<str<<endl;
	}
	tanxinselect(vecP);
   // selectjiHe(vecP);
	system("pause");
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网小镇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值