- 拯救世界-紧急召集
 - @ 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次失败,代码逻辑应该没有问题,也不知道评测所用数据。请大佬指正!
感谢