- 拯救世界-紧急召集
- 2018-08-12 16:50:18 @
#include<string>
#include<iostream>
using std::string;
using std::cin;
using std::cout;
int main()
{
int ex_number[5000]; // 保存国家研究人员数据
int distance[5000]; //保存距离记录
string country[5000]; //保存国家名称
int key = 0; // 记录最近的国家序号
int expense=0; //记录费用
int nail=0; //计数,国家数
while(1)
{
cin>>ex_number[nail];
cin>>distance[nail];
cin>>country[nail];
cin.get();
if(country[nail] != "")
{
nail++;
}
else break; //以专家数目为0作为退出读取标志
}// 国家数为nail个,编号最大为nail-1
for(int i=0;i<nail;i++)
{
expense+=abs(distance[i]-distance[0])*ex_number[i];
} //先求出一个费用值,再做比较;否则expense初始值应为正无穷
for(int i =1;i<nail;i++)
{
int temp=0; // 保存临时费用
for(int j=0;j<nail;j++)
{
temp+=abs(distance[i]-distance[j])*ex_number[j];
}
if(expense>temp)
{
key = i;
expense=temp; //更新费用最小值
}
}
cout<<country[key];
return 0;
}
评测时6次通过,4次失败,代码逻辑应该没有问题,也不知道评测所用数据。请大佬指正!
感谢