PTA 7-110 Problème de ravitaillement en carburant (20 points) (gourmand en eau)

7-110 Problème de ravitaillement en carburant (20 points)
Source du titre: Wang Xiaodong "Conception et analyse d'algorithmes"

Une voiture peut parcourir n kilomètres après avoir été remplie. Il y a plusieurs stations-service pendant le trajet. Concevez un algorithme efficace pour indiquer quelles stations-service doivent s'arrêter pour faire le plein, afin de minimiser le nombre de ravitaillements en cours de route.

Format d'entrée: La
première ligne comporte 2 entiers positifs n et k (k <= 1000), ce qui signifie que la voiture peut parcourir n kilomètres après avoir été remplie de carburant, et qu'il y a k stations-service pendant le trajet. Il y a k + 1 entiers sur la deuxième ligne, qui représentent la distance entre la ke station-service et la k-1e station-service. La 0ème station-service représente le lieu de départ et la voiture est remplie d'essence. La station-service k + 1 représente la destination.

Format de
sortie : affiche le nombre minimum de ravitaillements. Si la destination ne peut pas être atteinte, "Pas de solution!" Est émis.

Exemple d'entrée:
7 7
1 2 3 4 5 1 6 6
Exemple de sortie:
4

#include<bits/stdc++.h>
using namespace std;
int main(){
    
    
	int n,k,num[1009]={
    
    },flag=0,x,total=0;
	cin>>n>>k;
	x=n;
	for(int i=0;i<=k;i++)cin>>num[i];
	for(int i=1;i<k;i++){
    
    
		if(n<num[i]){
    
    
			cout<<"No Solution!"<<endl;
			flag=1;
			break;
		}
		else {
    
    
			n-=num[i];
			if(n<num[i+1]){
    
    
				n=x;
				total++;
			}
		}
	}if(!flag)cout<<total;

	return 0;
	
}

Je suppose que tu aimes

Origine blog.csdn.net/Minelois/article/details/113280525
conseillé
Classement