±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 594  |  »Ø¸´: 0

ju5200

ľ³æ (ÕýʽдÊÖ)

[ÇóÖú] C++ʵÏÖ24µã¼ÆËãµÄ´úÂëÄÄλ´ó¸çÄܰïæ½âÊÍһϰ¡£¿¿Î³ÌÉè¼Æ£¬¿ì¼±ËÀÁË,Íò·Ö¸Ðл°¡£¡

#include<iostream>
using namespace std;
#include<string>
#include<stdlib.h>
const double PRECISION = 1E-6; //¾«¶È³£Á¿
const int COUNT_OF_NUMBER = 4; //Ëã24µãµÄ×ÔÈ»Êý¸öÊý
const int NUMBER_TO_BE_CAL = 24;
void Swap(int &m,int &n)
{
int x;
x=m;
m=n;
n=x;
}
class RationalNumber //¶¨ÒåÓÐÀíÊýÀࣨ·Ö×Ó¡¢·Öĸ£©
{
protected:
int numerator,denominator; //numerator£º·Ö×Ó£¬denominator£º·Öĸ
bool inf;
protected:
int gcd(int a,int b) //ÇóaºÍbµÄ×î´ó¹«Ô¼Êý
{
if(a==0)return b;if(b==0) return a;
if(a>b) Swap(a,b);
while(a>0){
int c=b%a;b=a;a=c;
}
return b;
}
public:
RationalNumber()
{
inf=false;
}
RationalNumber(int n)
{
numerator=n;
denominator=1;
inf=false;
}
RationalNumber(int numerator,int denominator)
{
this->numerator=numerator;
this->denominator=denominator;
Simplify();
}
virtual ~RationalNumber() {}
void Simplify()
{
if(denominator==0)
{
inf=true;
}
else
if(numerator==0)
{
denominator=1;
inf=false;
}
else
{
int k=gcd(abs(numerator),abs(denominator));
numerator/=k;
denominator/=k;
inf=false;
}
}

RationalNumber operator+(const RationalNumber& b) const
{
RationalNumber result;
result.denominator=this->denominator*b.denominator;
result.numerator=this->numerator*b.denominator+this->denominator*b.numerator;
result.Simplify();
return result;
}


RationalNumber operator-(const RationalNumber& b) const
{
RationalNumber result;
result.denominator=this->denominator*b.denominator;
result.numerator=this->numerator*b.denominator-this->denominator*b.numerator;
result.Simplify();
return result;
}


RationalNumber operator*(const RationalNumber& b) const
{
RationalNumber result;
result.denominator=this->denominator*b.denominator;
result.numerator=this->numerator*b.numerator;
result.Simplify();
return result;
}
RationalNumber operator/(const RationalNumber& b) const
{
RationalNumber result;
result.denominator=this->denominator*b.numerator;
result.numerator=this->numerator*b.denominator;
result.Simplify();
return result;
}
RationalNumber& operator=(const RationalNumber& b)
{
denominator=b.denominator;
numerator=b.numerator;
return (*this);
}
RationalNumber& operator=(int b)
{
denominator=1;
numerator=b;
return (*this);
}
bool operator==(const RationalNumber& b) const
{
if((b.denominator==this->denominator)&&(b.numerator==this->numerator)) return true;
return false;
}
bool operator==(int b) const
{
if((1==this->denominator)&&(b==this->numerator)) return true;
return false;
}
bool operator!=(const RationalNumber& b) const
{         if(b.denominator!=this->denominator||b.numerator!=this->numerator) return true;
return false;
}
bool operator!=(int b) const
{
if(1!=this->denominator||b!=this->numerator) return true;
return false;
}
int Numerator() const
{ return numerator; }
int Denominator() const
{ return denominator; }
};

RationalNumber number[COUNT_OF_NUMBER]; //ÓÃÊý×énumber[]±£´æ²Ù×÷Êý
string expression[COUNT_OF_NUMBER]; //ÓÃÊý×éexpression[]±£´æËãʽ

bool Search(int n) //µÝ¹éº¯Êý
{
if (n==1)
{
if (number[0]==NUMBER_TO_BE_CAL) //³É¹¦ËÑË÷µÃµ½24
//Èônumber[]ÊÇdoubleÐÍ
//Ò²¿ÉÓÃif (fabs(number[0]-NUMBER_TO_BE_CAL)<PRECISION)
{
cout<<expression[0]<<endl; //Êä³ö±í´ïʽ
return true;
}
else
{
return false;
}
}
for (int i=0;i<n;i++)
{
for (int j=i+1;j<n;j++)
{
RationalNumber a, b;
string expa, expb;
a=number; //ÓÃa±£´ænumber
b=number[j]; //ÓÃb±£´ænumber[j]
number[j]=number[n-1]; //½«number[n-1]ÏòǰÌîÈëµ½Ô­À´number[j]µÄλÖÃ
expa=expression; //ÓÃexpa±£´æexpression
expb=expression[j]; //ÓÃexpb±£´æexpression[j]
expression[j]=expression[n-1];
//½«expression[n-1]ÏòǰÌîÈëµ½Ô­À´expression[j]µÄλÖÃ
//ÒòΪÏÂÒ»²ãµÝ¹éµ÷ÓÃsearch(n-1)½«½ö¶ÔϱêΪ0~n-2µÄÊý½øÐвÙ×÷ÁË
//¼Ó·¨
expression='('+expa+'+'+expb+')';
//½«aºÍb¼ÆËãµÄËãʽÌîÈëµ½Ô­À´expressionµÄλÖÃ
number=a+b; //½«aºÍb¼ÆËãµÄ½á¹ûÌîÈëµ½Ô­À´numberµÄλÖÃ
if (Search(n-1)) return true;
//Ò»µ©µÃµ½Ò»¸ö¿ÉÐн⣬¼´²ã²ãÏòÉÏ·µ»Ø£¬´Ó¶øÈ·±£Ö»Êä³öÒ»¸ö¿ÉÐнâ
//¼õ·¨ÓÐÁ½ÖÖÇé¿öa-bºÍb-a
expression='('+expa+'-'+expb+')';
number=a-b;
if (Search(n-1)) return true;
expression='('+expb+'-'+expa+')';
number=b-a;
if (Search(n-1)) return true;
//³Ë·¨
expression='('+expa+'*'+expb+')';
number=a*b;
if (Search(n-1)) return true;
//³ý·¨Ò²ÓÐÁ½ÖÖÇé¿öa/bºÍb/a
if (b!=0)
{
expression='('+expa+'/'+expb+')';
number=a/b;
if (Search(n-1)) return true;
}
if (a!=0)
{
expression='('+expb+'/'+expa+')';
number=b/a;
if (Search(n-1)) return true;
}
//±¾ÂÖµ÷ÓÃÍê±Ïºó£¬ÓÃa,b,expa,expb½«Êý×énumber[]ºÍexpression[]»Ö¸´Ô­×´
number=a;
number[j]=b;
expression=expa;
expression[j]=expb;
}
}
return false;
}





СµÜµÄC++¶¼ÊÇ×ÔѧµÄ  ÀïÃæºÃ¶à¶«Î÷֮ǰû½Ó´¥¹ý
ÒòΪ¿Î³ÌÉè¼ÆÊ±¼ä±È½Ï½ô ûʱ¼ä²é¿´Ïà¹Ø×ÊÁÏ
ÌØÀ´´ËÇó³ö ´úÂëÎļþÔÚ¸½¼þÀï
ÉÔ΢Óе㳤 »¹Çë¸÷λ°ï°ïæÁË
ÏÈлл¸÷λÁË

int main()
{
cout<<"please input four numbers:"<<endl;
for (int i=0;i<COUNT_OF_NUMBER;i++)
{
char buffer[20]; //·ÖÅ䳤¶ÈΪ20µÄ×Ö·ûÊý×ébuffer[]
int x;
cin>>x;
number=x;
itoa(x,buffer,10); //itoa():½«Ò»¸ö10½øÖƵÄintegerÊýת»»ÎªstringÀàÐÍ
//¼´£º°ÑÊäÈëµÄintÐͲÙ×÷Êýx£¬×ª±ä³É¿ÉÒÔ·ÅÔÚbuffer[]ÖеÄstringÀàÐÍ
expression=buffer; //ÓÃexpressionÖ¸ÕëÖ¸Ïòbuffer[]Êý×é¿Õ¼äµÄÆðʼλÖÃ
}
bool dex=Search(4);
if(!dex) cout<<"Fail!!!"<<endl;

return 0;
}
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹ØÉ̼ÒÍÆ¼ö: (ÎÒÒ²ÒªÔÚÕâÀïÍÆ¹ã)

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ ju5200 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 282Çóµ÷¼Á +3 aaa³µÁ¾ 2026-04-02 3/150 2026-04-02 21:55 by zllcz
[¿¼ÑÐ] ²ÄÁÏר˶322·Ö +10 ¹þ¹þ¹þºðºðºð¹þ 2026-04-02 10/500 2026-04-02 21:46 by dongzh2009
[¿¼ÑÐ] 0703»¯Ñ§ +5 goldtt 2026-04-02 7/350 2026-04-02 21:32 by dongzh2009
[¿¼ÑÐ] 085602 ÕÒµ÷¼Á +3 ÄæÊ±Õë¿ìÀÖ 2026-04-02 3/150 2026-04-02 21:23 by dongzh2009
[»ù½ðÉêÇë] esi¸ß±»ÒýÂÛÎÄÊDz»ÊÇÄܶÔÖбêÓÐËù¼Ó·ÖºÍ°ïÖúÄØ +4 redcom 2026-04-01 5/250 2026-04-02 20:48 by redcom
[¿¼ÑÐ] 298ÇóBÇøµ÷¼Á +4 zzz£¬£¬r 2026-04-02 5/250 2026-04-02 12:17 by ÍÁľ˶ʿÕÐÉú
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄÏʦ´ó0703»¯Ñ§ 275Çóµ÷¼Á +6 RipcordÉϰ¶ 2026-03-27 6/300 2026-04-02 11:19 by TTTpp
[¿¼ÑÐ] 324Çóµ÷¼Á +5 ÏëÉÏѧÇóµ÷ 2026-04-01 6/300 2026-04-02 10:16 by sanrepian
[¿¼ÑÐ] ÖØÇì´óѧ²ÄÁÏÓ뻯¹¤085600£¬³õÊÔ370+£¬ÇóÇóµ÷¼Á½¨Òé +5 shzhou_ 2026-04-01 6/300 2026-04-02 10:05 by olim
[¿¼ÑÐ] 320·Ö£¬²ÄÁÏÓ뻯¹¤×¨Òµ£¬Çóµ÷¼Á +14 Ò»¶¨Éϰ¶aaa 2026-03-27 18/900 2026-04-01 20:10 by »ý¼«µ÷¼ÁµÄСѧÉ
[¿¼ÑÐ] 350Çóµ÷¼Á +7 °¢¼Ñ¡« 2026-03-31 7/350 2026-04-01 16:12 by yanflower7133
[¿¼ÑÐ] 326Çóµ÷¼Á +4 áÌáÌ×Ð 2026-03-31 4/200 2026-04-01 09:58 by ÎҵĴ¬Îҵĺ£
[¿¼ÑÐ] 0710ÉúÎïѧÇóµ÷¼Á£¡ +6 ÐðÊöÎÄ 2026-03-31 6/300 2026-04-01 09:39 by JourneyLucky
[¿¼ÑÐ] µ÷¼ÁÉêÇë +8 ÕÅÕÅÕÅÕÅzy 2026-03-31 9/450 2026-04-01 08:29 by zjbkx
[¿¼ÑÐ] ¿¼Ñе÷¼Á +9 СÀ¯ÐÂ±Ê 2026-03-29 10/500 2026-03-31 19:52 by Dyhoer
[¿¼ÑÐ] Ò»Ö¾Ô¸Äϲý´óѧ324Çóµ÷¼Á +6 hanamiko 2026-03-29 6/300 2026-03-31 16:35 by hypershenger
[¿¼ÑÐ] Ò»Ö¾Ô¸Õã½­´óѧ¹¤¿Æ¶¯Á¦¹¤³Ì370,ÊýÒ»121,רҵ¿Î135£¬ÏÖÔÚÄÜÈ¥ÄÄÀï +3 080700µ÷¼Á 2026-03-30 4/200 2026-03-31 12:00 by KLMY666
[¿¼ÑÐ] 083000»·¾³¿ÆÑ§Ó빤³Ìµ÷¼Á£¬×Ü·Ö281 +4 ³È×Ó£¨Ê¤Ò⣩ 2026-03-30 4/200 2026-03-31 00:44 by Linzejun
[¿¼ÑÐ] ±¾¿ÆÐÂÄÜÔ´¿ÆÑ§Ó빤³Ì£¬Ò»Ö¾Ô¸»ªÀíÄܶ¯285Çóµ÷¼Á +7 AZMK 2026-03-28 11/550 2026-03-28 21:01 by xxxsssccc
[¿¼ÑÐ] 340Çóµ÷¼Á +5 jhx777 2026-03-27 5/250 2026-03-28 04:18 by fmesaito
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û