Red de conocimiento informático - Problemas con los teléfonos móviles - [Problema de lenguaje C][Expertos, por favor vengan] 12345 ¿Cómo pasar - × ÷ para obtener 22?

[Problema de lenguaje C][Expertos, por favor vengan] 12345 ¿Cómo pasar - × ÷ para obtener 22?

Lo escribí:

#include "iostream.h"

#include "math.h"

# include lt ; stringgt;

usando el espacio de nombres std;

doble número[5];

cadena exps[5]; doble d, int p)

{

doble *dp, d1;

dp=nuevo doble;

d= d* pow(10,p);

d1=modf(d,dp);

d1gt;=0.5?d=(*dp 1)/pow(10,p ): d=*dp/pow(10, p);

eliminar dp;

return d; n)

{

int i, j; doble a, b; cadena como, bs

if (n==1)

{

if(round(num[0], 4)==22)

{

coutlt;lt;exps[0 ]. c_str()lt;lt;endl;

devuelve falso;

}

devuelve falso;

}

para(i=0;ilt;n;i){

para(j=0;jlt;n;j){

si(i==j )continuar

a=núm[i];

b=núm[j]

núm[j]=núm[n-1]; p>

as=exps[i];

bs=exps[j];

exps[j]=exps[n-1]; p> if(i!=n-1){num[i]=a b;exps[i]=string("(") as (string)" " bs (string)"";}else {num [j ]=a b;exps[j]=string("(") as (string)" " bs string(")");}

if(is22(n-1))return true;

if(i!=n-1){num[i]=a-b; exps[i]=string("(") as (string)"-" bs string(")") ;} else {num[j]=b-a;exps[j]=string("(") as (string)"-" bs string(")");}

if(is22(n -1 ))devuelve verdadero;

if(i!=n-1){num[i]=a*b;exps[i]=as (string)"*" bs;}else { num[ j]=a*b;exps[j]=as (string)"*" bs;}

if(is22(n-1))return true;

if(i!=n-1){num[i]=a/b;exps[i]=as (cadena)"/" bs;}else {num[j]=a/b;exps[ j]=as (cadena)"/" bs;}

if(is22(n-1))return true;

num[i]=a;

num[j]=b;

exps[i]=as;

exps[j]=bs

}

}

devuelve falso;

}

void main()

{

num[ 0]=1, núm[1]=2, núm[2]=3, núm[3]=4, núm[4]=5;

exps[0]="1", exps [1]="2", exps[2]="3", exps[3]="4", exps[4]="5"

es22(5); >

}

Las expresiones generadas pesan más de 40 KB, las publicaré aleatoriamente

(((1 2)*5 4) 3)

(3 ((1 2)*5 4))

(((1 2)*5 3) 4)

(4 ((1 2)*5 3 ))

(3 (4 (1 2)*5))

((4 (1 2)*5) 3)

(( 1 2)*5 (4 3))

((4 3) (1 2)*5)

((3 (1 2)*5) 4)

(4 (3 (1 2)*5))

((1 2)*5 (3 4))

((3 4) (1 2 )*5)

(((1 2) 4) 5*3)

(5*3 ((1 2) 4))

( ((1 2) 4) 3*5)

(3*5 ((1 2) 4))

((4 5*(1 2)) 3)

(3 (4 5*(1 2)))

((4 3) 5*(1 2))

(5*(1 2) ) (4 3))

(3 (5*(1 2) 4))

((5*(1 2) 4) 3)

(4 (5*(1 2) 3))

((5*(1 2) 3) 4)

((3 4) 5*(1 2 ) )

(5*(1 2) (3 4))

(4 (3 5*(1 2)))

((3 5 *(1 2)) 4)

(((1 2) 5*3) 4)

(4 ((1 2) 5*3))

(((1 2) 4) 5*3)

(5*3 ((1 2) 4))

(4 (5*3 (1 2) )))

((5*3 (1 2)) 4)

((1 2) (5*3 4))

( ( 5*3 4) (1 2))

((4 (1 2)) 5*3)

(5*3 (4 (1 2)))< / p>

((1 2) (4 5*3))

((4 5*3) (1 2))

(((1 2) 4 ) 3*5)

(3*5 ((1 2) 4))

(((1 2)

3*5) 4)

(4 ((1 2) 3*5))

(3*5 (4 (1 2)))

((4 (1 2)) 3*5)

((1 2) (4 3*5))

((4 3*5) (1 2) )

((3*5 (1 2)) 4)

(4 (3*5 (1 2)))

((1 2 ) (3*5 4))

((3*5 4) (1 2))

((1 2)*5 (3 4))

((3 4) (1 2)*5)

((3 4) 5*(1 2))

(5*(1 2) (3 4))

((4 (1 2)) 5*3)

(5*3 (4 (1 2)))

(( 4 (1 2)) 3*5)

(3*5 (4 (1 2)))

((1 2)*5 (4 3))

((4 3) (1 2)*5)

((4 3) 5*(1 2))

(5*(1 2) (4 3))

(((1-2) 3) 5*4)

(5*4 ((1-2) 3))

(((1-2) 3) 4*5)

(4*5 ((1-2) 3))

(4 (5-(1- 2))*3)

((5-(1-2))*3 4)

(4 3*(5-(1-2)))

(3*(5-(1-2)) 4)

(((1-2) 5*4) 3)

(3 (( 1-2) 5*4))

(((1-2) 3) 5*4)

(5*4 ((1-2) 3))

(3 (5*4 (1-2)))

((5*4 (1-2)) 3)

((1- 2) (5*4 3))

((5*4 3) (1-2))

((3 (1-2)) 5*4)

(5*4 (3 (1-2)))

((1-2) (3 5*4))

((3 5 *4) (1-2))

(4*5 (3 (1-2)))

((3 (1-2)) 4*5)

((3 (1-2)) 5*4)

(5*4 (3 (1-2)))

(((1 -2) 4*5) 3)

(3 ((1-2) 4*5))

(((1-2) 3) 4*5)

(4*5 ((1-2) 3))

(3 (4*5 (1-2)))

((4* 5 (1-2)) 3)

((1-2) (4*5 3))

((4*5 3) (1-2))

((3 (1-2)) 4*5)

(4*5 (3 (1-2)))

((1- 2) (3 4*5))

((3 4*5) (1-2))

(1*2*5 4*3)

(4*3 1*2*5)

(1*2*5 3*4)

(3*4 1*2*5)

(4*3 5*1*2)

(5*1*2 4*3)

(3*4 5*1*2)

(5*1*2

3*4)

4*(5/1*2 3)

(5/1*2 3)*4

4*(3 5 /1*2)

(3 5/1*2)*4

1*2*(5*3-4)

(5* 3-4)*1*2

1*2*(4-5*3)

(4-5*3)*1*2

(1*2*5 3*4)

(3*4 1*2*5)

(3*4 5*1*2)

(5*1*2 3*4)

(1*2*5 4*3)

(4*3 1*2*5)

(4*3 5*1*2)

(5*1*2 4*3)

(1/2*5 3)*4

4*(1/2*5 3)

(3 1/2*5)*4

4*(3 1/2*5)

4*(5*1/2 3)

(5*1/2 3)*4

4*(3 5*1/2)

(3 5*1/2)*4

(4*3 5/1/2)

(5/1/2 4*3)

(3*4 5/1/2)

(5/1/2 3*4)

(5*3-4)/1 /2

(4-5*3)/1/2

(3*4 5/1/2)

(5/1/2 3*4)

(4*3 5/1/2)

(5/1/2 4*3)

(((1 3 )-2) 4*5)

(4*5 ((1 3)-2))

(((1 3)-2) 5*4)

(5*4 ((1 3)-2))

((1 3)/2 4*5)

(4*5 (1 3 )/2)

((1 3)/2 5*4)

(5*4 (1 3)/2)

((( 1 3) 5)*2 4)

(4 ((1 3) 5)*2)

(4 2*((1 3) 5))

Filtrar también es muy sencillo

Simplemente agregue una oración a la declaración coutlt;lt;exps[0].c_str()lt;lt;endl;

:

if(exps[0].find(" ")!=string::npos amp;amp; exps[0].find("-")!=string::npos amp;amp; exps [0].find("*")!=string::npos amp;amp; exps[0].find("/")!=string::npos)

Los resultados obtenidos son los siguientes: sigue:

(4 3/2)*(5-1)

(5-1)*(4 3/2)

4*( ( 5-1) 3/2)

((5-1) 3/2)*4

(3/2 4)*(5-1)

(5-1)*(3/2 4)

4*(3/2 (5-1))

(3/2 (5-1) ) )*4

4*((5 3/2)-1)

((5 3/2)-1)*4

4 * (5 (3/2-1))

(5 (3/2-1))*4

4*((3/2-1) 5)< / p>

((3/2-1) 5)*4

(3/2

4)*(5-1)

(5-1)*(3/2 4)

(4 3/2)*(5-1)

(5-1)*(4 3/2)