qz
查看原帖
qz
503002
SafeGlobefish楼主2023/9/22 15:35

蒟蒻刚学c++第二天求助 为什么会死循环

#include<bits/stdc++.h>
using namespace std;
float cost,D1,D2,C,P,N;//总花费,总距离,每升油能跑的距离,油箱容积,出发点每升油价格,油站数量
int maxn=510;
struct youzhan{
	float distance,price;
}a[510];
int now=0;
int main(){
	cin>>D1>>C>>D2>>P>>N;
	a[0].distance=0;a[0].price=P;
	for(int i=1;i<=N;i++){
		cin>>a[i].distance>>a[i].price;
		if(i==N) a[i+1].distance=D1;a[i+1].price=0;
	}
	
	while(1){
		float cheap=a[now].price,near;
		for(int i=now;a[i].distance<=C*D2;i++){
			if(i==0) i++;
			if(cheap>a[i].price){
				cheap=a[i].price;
				near=a[i].distance;
			}
		}
		if(cheap==a[now].price){
			cheap=1e7;
			for(int i=now;a[i].distance<=C*D2;i++){
				if(i==0) i++;
				if(cheap>a[i].price){
					cheap=a[i].price;
					near=a[i].distance;
				}
			}
		}
		if(cheap==1e7){
			cout<<"No Solution"<<endl;
			return 0;
		}
		cost+=(near/D2)*a[now].price;now=near;
		if(near==N) break;
	}
	printf("%.2f",cost);
	return 0;
} 
2023/9/22 15:35
加载中...