牛客网浮点错误怎么解决?

qq_42153923 qq_42153923 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
牛客网上的pat题目:All Roads Lead to Rome,我在自己的vc6.0上没有问题,牛客网显示浮点错误? 把浮点错误去掉之后还超时。。。大佬救救孩子

#include <iostream>
#include <vector>
#include <string>
#include <limits.h>

using namespace std;

int N,K,rome; //the number of cities and routes
string start;
vector<string> city;
vector<int> happiness;
vector<vector<int> > cost;
vector<bool> visit;

int bests, costs, happy, ave_happy;
int correctHappy, correctAveHappy;
int correctCosts=INT_MAX;
vector<int> route,correctRoute;

void dfs(int pre, int present, int end);

int main()
{
int i,hap;
string cit;
ios::sync_with_stdio(false);
cin>>N>>K>>start;
city.resize(N,start);
happiness.resize(N,0);
cost.resize(N,vector<int>(N,0));
visit.resize(N,false);
for(i=1;i<N;i++)
{
cin>>cit>>hap;
if(cit=="ROM")
rome=i;
city[i]=cit;
happiness[i]=hap;
}
string city1,city2;
int cos,j,m,n;
for(i=0;i<K;i++)
{
cin>>city1>>city2>>cos;
for(j=0;j<N;j++)
if(city1==city[j])
{
m=j;
break;
}
for(j=0;j<N;j++)
if(city2==city[j])
{
n=j;
break;
}
cost[m][n]=cos;
cost[n][m]=cos;
}
dfs(0,0,rome);
cout<<bests<<" "<<correctCosts<<" "<<correctHappy<<" "<<correctAveHappy<<endl;
cout<<city[correctRoute[0]];
for(i=1;i<correctRoute.size();i++)
cout<<"->"<<city[correctRoute[i]];
cout<<endl;

return 0;
}

void dfs(int pre, int present, int end)
{
if(costs>correctCosts)
return;
int i;
visit[present]=true;
costs+=cost[pre][present];
happy+=happiness[present];
route.push_back(present);

if(present==end)
{
ave_happy=happy/(route.size()-1);
if(costs<correctCosts)
{
bests=1;
correctCosts=costs;
correctRoute=route;
correctHappy=happy;
correctAveHappy=ave_happy;
return;
}
else if(costs==correctCosts)
{
bests++;
if(happy>correctHappy)
{
correctCosts=costs;
correctRoute=route;
correctHappy=happy;
correctAveHappy=ave_happy;
return;
}
else if(happy==correctHappy)
if(ave_happy>correctAveHappy)
{
correctCosts=costs;
correctRoute=route;
correctHappy=happy;
correctAveHappy=ave_happy;
return;
}
}
}
else
for(i=0;i<N;i++)
if(!visit[i]&&cost[present][i]!=0)
{
dfs(present,i,end);
route.pop_back();
costs-=cost[i][present];
happy-=happiness[i];
visit[i]=false;
}
}
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
qq_42153923
其它技术问题 3,881 成员 9,044 内容