codeup tarifas de taxi (C ++)

título Descripción

A reglas taxímetro de la ciudad son los siguientes: cuatro kilómetros iniciales $ 10, incluso si usted no viaje más de 4 km; los próximos cuatro kilómetros y 2 yuanes por kilómetro, después de 2,4 yuanes por kilómetro. Última etapa de incluso menos de 1 km, pero también como carga un kilómetro.
Los pasajeros pueden arreglar un coche para viajar unos pocos kilómetros acuerdo para reducir al mínimo su tarifa pelea.
Por ejemplo, toda la carrera de 16 km, el pasajero será la misma longitud de la carrera se divide en dos partes, cada una gastaron $ 18, un costo total 1,20. Si toma un taxi todo el recorrido para pasar de 37,2 yuanes.
Ahora para darle todo el viaje a unos pocos kilómetros, se toma un taxi cuesta mínimo de computación.

entrada

Entrada de prueba que comprende una pluralidad de conjuntos de datos. Cada introduzca un número entero positivo n (n <10000000), km representa todo el viaje.
Cuando n = 0, el extremo de entrada.

exportación

costo mínimo para cada conjunto de entrada y salida. Si es necesario, con un decimal.

de entrada de muestra  Copia

3 
9 
16 
0

Un ejemplo de salida de copia

10 
20,4 
36

Esquema de Solución: Este problema es un codicioso, primero debe encontrar el óptimo pasar los períodos de tiempo, cuando 0 <Rode <= 4, toma un mínimo de 10, cuando 4 <Rode <= 8, toma un mínimo de 10 + (Rode - 4) * 2 millones; cuando se montó> 8, se produce una situación diferente, conocido como 8 kilometros superior a un kilómetro: ① cuando cuando 0 <a <= 4, para continuar a tomar un taxi para gastar menos; ② cuando 4 <a <= 5, de nuevo un taxi, continuar coche tarda aproximadamente el mismo (código de aplicación a este caso clasificado como taxi re in); ③ cuando 5 <a, el taxi volver más rentable, y debido inicio más cercano repetida caso mencionado, que así Rode - = 8; dinero + = 18; tomar son reinicia.

Precauciones: Al comenzar a darse cuenta, voluntad Rode - = 8; + dinero = 18; Este código también se escribe como una función de la demanda de taxis pasado, lo que resulta en exceso de la memoria. A finales de este código en la función principal obtenido después de salir.

Código es el siguiente:

#include<bits/stdc++.h>
using namespace std;
double fee(int rode){
	if(rode <= 4) return 10;
	else if(rode <= 8) return 10 + (rode - 4) * 2;
	else if(rode <= 12) return 18 + (rode - 8) * 2.4;
	else return 0;
} 
int main(){
	int rode;
	while(scanf("%d",&rode),rode){
		double money = 0;
		while(rode > 12){
			rode -= 8;
			money += 18;
		}
		money += fee(rode);
		if(money - (int)money > 0)  printf("%.1lf\n",money);
		else printf("%d\n",(int)money);
	}
}

 

Publicado 32 artículos originales · ganado elogios 2 · Vistas 1611

Supongo que te gusta

Origin blog.csdn.net/qq_38969094/article/details/104388687
Recomendado
Clasificación