1. 程式人生 > >搜狐暢遊2019第一題

搜狐暢遊2019第一題

整理題目時發現我居然沒截圖,不過題比較簡單,大意是進入遊戲時隨機到一個座標點,遊戲中有多個NPC在固定的座標位置,求距離人物最近的NPC的位置。需要動個腦筋的是輸入是x,y,n,x1,y1,x2,y2.....x和y是人物座標位置,n為NPC個數,之後的都是NPC座標,“,“為英文逗號。

程式碼入下:

#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include<algorithm>
#include <string>
#include <math.h>

using namespace std;

double GetLength(int xNPC,int yNPC,int x,int y,int XALL,int YALL)
{
	if (x>XALL||y>YALL||xNPC>XALL||xNPC>YALL)
	{
		return 0;
	}
	double dLength=0;
	dLength=sqrt((double)(x-xNPC)*(x-xNPC)+(y-yNPC)*(y-yNPC));
	return dLength;
}

int main()
{
	int x;cin>>x;
	string str;getline(cin,str,',');
	int y;cin>>y;
        getline(cin,str,',');
	int N;cin>>N;
	int XALL=128;
	int YALL=128;
	double dMAX=0;
	int XNPCWANT,YNPCWANT;
	if (N>1000)
	{
		return 0;
	}
	
	for (int i=0;i<N;i++)
	{
		getline(cin,str,',');
		int xNPC;cin>>xNPC;
		getline(cin,str,',');
		int yNPC;cin>>yNPC;
		double dTemp=GetLength(xNPC,yNPC,x,y,XALL,YALL);
		if (i==0)
		{
			dMAX=dTemp;
			XNPCWANT=xNPC;
			YNPCWANT=yNPC;
		}
		if (dMAX>dTemp)
		{
			dMAX=dTemp;
			XNPCWANT=xNPC;
			YNPCWANT=yNPC;
		}	
	}
	cout<<"("<<XNPCWANT<<","<<YNPCWANT<<")"<<endl;

	return 0;
}

 重點需要關注的是:如何讀得逗號間隔:

string str.getline(cin,str,',');