Estoy tratando de escribir un programa en C++ que funcione como el juego 24. Para aquellos que no saben cómo se juega, básicamente tratas de encontrar cualquier forma en que 4 números puedan total 24 a través de los cuatro operadores algebraicos de +, -, /, * y paréntesis.Escribiendo una versión en C++ del juego de álgebra 24
Como un ejemplo, que un usuario introduce 2,3,1,5 ((2 + 3) * 5) - 1 = 24
era relativamente sencillo para codificar la función para determinar si tres números pueden make 24 debido a la cantidad limitada de posiciones para paréntesis, pero no entiendo cómo se codifica de manera eficiente cuando se ingresan cuatro variables.
Tengo algunas permutaciones de trabajo ahora, pero todavía no se pueden enumerar todos los casos, porque no sé cómo el código para los casos en que las operaciones son las mismas.
Además, ¿cuál es la forma más fácil de calcular el RPN? Encontré muchas páginas como esta: http://www.dreamincode.net/forums/index.php?showtopic=15406 pero como principiante, no estoy seguro de cómo implementarlo.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool MakeSum(int num1, int num2, int num3, int num4)
{
vector<int> vi;
vi.push_back(num1);
vi.push_back(num2);
vi.push_back(num3);
vi.push_back(num4);
sort(vi.begin(),vi.end());
char a1 = '+';
char a2 = '-';
char a3 = '*';
char a4 = '/';
vector<char> va;
va.push_back(a1);
va.push_back(a2);
va.push_back(a3);
va.push_back(a4);
sort(va.begin(),va.end());
while(next_permutation(vi.begin(),vi.end()))
{
while(next_permutation(va.begin(),va.end()))
{
cout<<vi[0]<<vi[1]<<vi[2]<<vi[3]<< va[0]<<va[1]<<va[2]<<endl;
cout<<vi[0]<<vi[1]<<vi[2]<<va[0]<< vi[3]<<va[1]<<va[2]<<endl;
cout<<vi[0]<<vi[1]<<vi[2]<<va[0]<< va[1]<<vi[3]<<va[2]<<endl;
cout<<vi[0]<<vi[1]<<va[0]<<vi[2]<< vi[3]<<va[1]<<va[2]<<endl;
cout<<vi[0]<<vi[1]<<va[0]<<vi[2]<< va[1]<<vi[3]<<va[2]<<endl;
}
}
return 0;
}
int main()
{
MakeSum(5,7,2,1);
return 0;
}
(2 * 3 * 5) + 1 = 24? – Tanzelax
más probable ((2 + 3) * 5) + 1 = 24. Buenos ojos: D –
Con lo que quieres decir ((2 + 3) * 5-1 = 24: p También hay un montón de otras soluciones para ese conjunto particular de cuatro números, pero sí. – Tanzelax