Certificación CSP 24,2 (C ++)

Descripción del problema

número de la pregunta: 201903-2
Preguntas Nombre: 24.2
Plazo: 1.0s
Límite de memoria: 512.0MB

preguntar

título

Descripción:

Ideas resolución de problemas: de hecho, el tema es una versión simplificada de la "evaluación de la expresión", el método se puede seleccionar la expresión infija notación su vez postfix y luego evaluado, sin embargo, ya que este tema sin el uso de proceso complejo (de hecho, no soy la capacidad. ... Quiero ser perezoso .....). Alternativamente num definir una pila, almacena los valores calculados generados durante variables de vector y, finalmente, acumulando el resultado valor directo array / pila obtenido (un primer valor almacenado en la primera expresión num, y la parte restante de traverse: este símbolo 'x '/' / 'se calcula directamente temp = a * b * o más temp = a / b, a continuación, el valor de la num temp de empuje de admisión, si la señal de corriente es' - 'entonces el num negativo almacenado; si' + ', continúe; empezó a escribir aquí i ++, en busca de un largo tiempo sin errores encontrados, si el carácter actual es un dígito, entonces el num depósito directo).

Los códigos son los siguientes:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	scanf("%d",&n);
	while(n--){
		char str[10];
		scanf("%s",&str);
		stack<int> num;
		num.push(str[0] - '0');   // 存入第一个数字 
		for(int i = 1; str[i] != '\0'; i++){
			if(str[i] == 'x' ){
				int pre = num.top();
				num.pop();
				int temp = pre*(str[++i] - '0');
				num.push(temp);
			}else if(str[i] == '/'){
				int pre = num.top();
				num.pop();
				int temp = pre/(str[++i] - '0');
				num.push(temp);
			}else if(str[i] == '-'){
				int temp = -1 * (str[++i] - '0');
				num.push(temp);
			}else if(str[i] == '+'){
				continue;
			}else if(str[i] >= '0' || str[i] <= '9'){
				num.push(str[i] - '0');
			} 
		}
		int ans = 0;
		while(!num.empty()){
			int temp = num.top();
			num.pop();
			ans += temp;
		} 
		if(ans == 24) printf("Yes\n");
		else printf("No\n");
	}
} 
//测试样例
//10 
//9+3+4x3
//5+4x5x5
//7-9-9+8
//5x6/5x4
//3+5+7+9
//1x1+9-9
//1x9-5/9
//8/5+6x9
//6x7-3x6
//6x4+4/5

 

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

Supongo que te gusta

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