小弟我最近碰到了一个这个来很简单的问题
任意给定4个1-10以内的整数,用加减乘除中的任意组合方式,测试4个数的运算是否能得到24。
这个问提看起来很简单,但我却完全不知道从哪入手,望各位高手指点一下
任意给定4个1-10以内的整数,用加减乘除中的任意组合方式,测试4个数的运算是否能得到24。
这个问提看起来很简单,但我却完全不知道从哪入手,望各位高手指点一下
解决方案 »
- opengl+3ds+贴图问题
- 用vc如何打开word2003?
- 我在厦门,想利用下班时间搞些其他项目,挣点外快,希望有挣过外快的朋友进来给点建议。
- 关于滚动条得疑问,望各位高手答疑
- 老潘的“com原理”有个CFactory::LockServer(BOOL bLock)函数没有明白其含义,也没有看到谁调用了它?
- 这句话什么意思,我是初学着
- 俺问个土问题:visual Assist的用法。
- 太奇怪了!!!
- UDP接收结构体数据丢失
- 请教:我的iphlapi.h找不到呢?需要在其他的方下在什么开发包吗?
- 在程序员上看到了一个可以查看API调用的工具,想拉下来研究研究,但是忘了哪儿有下的
- 请问谁有debug的使用文档
(例:for(int i = 0;i < 4; i++)
可以随便设定i=0,1,2,3时
分别为加减乘除。不过需要注意的是,由于计算机用整数作除法时,会舍去后面的
的小数,因此,先除后乘时,必须改为先乘后除。单单作除法时,需要判断能否被
除尽(即没有小数)。如果考虑括号的话,问题稍微复杂:括号相当于改变优先级,此时可作如下考虑:
不论加减乘除,均只有以下5种运算顺序(数字表示操作数,^表示操作任意符号)
((1^2) ^3) ^4
(( 1^ (2^3) )^4)
( (1^2)^(3^4) )
(1^ (2^ (3^4) ) )
1^ ((2^3) ^4)
#pragma hdrstop#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//---------------------------------------------------------------------------
int k=0;
AnsiString way[4];
//---------------------------------------------------------------------------
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void do24 (int x,int y,int w)
{
switch (w)
{ case 1:k=x+y; way[w]="加"; break;
case 2:k=x-y; way[w]="减"; break;
case 3:k=x*y; way[w]="乘"; break;
case 4: if (x%y==x/y)
{
k=x/y;
way[w]="除";
break;
}
else
{
break;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int num[4];
AnsiString e[4];
e[1]=Edit1->Text;
e[2]=Edit2->Text;
e[3]=Edit3->Text;
e[4]=Edit4->Text;
int ie[4];
for (int i=1;i<5;i++)
{
if (e[i]=="1")
{
ie[i]=1;
}
else
{
if (e[i]=="2")
{
ie[i]=2;
}
else
if (e[i]=="3")
{
ie[i]=3;
}
else if (e[i]=="4")
{
ie[i]=4;
}
else
if (e[i]=="5")
{
ie[i]=5;
}
else if (e[i]=="6")
{
ie[i]=6;
}
else
if (e[i]=="7")
{
ie[i]=7;
}
else
if (e[i]=="8")
{
ie[i]=8;
}
else
if (e[i]=="9")
{
ie[i]=9;
}
else
if (e[i]=="10")
{
ie[i]=10;
}
else if (e[i]=="11")
{
ie[i]=11;
}
else
if (e[i]=="12")
{
ie[i]=12;
}
else
if (e[i]=="13")
{
ie[i]=13;
}
else
{
} }num[1]=ie[1];
num[2]=ie[2];
num[3]=ie[3];
num[4]=ie[4];
for (int a=1;a<5;a++)
{
for (int b=1;b<5;b++)
{
if (b==a)
{ }
else
for (int c=1;c<5;c++)
{
if (c==a || c==b)
{
}
else
for (int d=1;d<5;d++)
{
if (d==a || d==b || d==c)
{
}
else
for (int e=1;e<5;e++)
{do24(num[a],num[b],e);
for (int f=1;f<5;f++)
{do24(k,num[c],f);
for (int g=1;g<5;g++)
{
do24(k,num[d],g);
AnsiString A=num[a];
AnsiString B=num[b];
AnsiString C=num[c];
AnsiString D=num[d];
if (k==24)
{
Label1->Caption=A+way[e]+B+way[f]+C+way[g]+D;
return;
}
else{
k=0;
}
}
}
}
} }
}
}
}
}//---------------------------------------------------------------------------
//Build by C++ Builder 5
//(C)2003 张叶.//---------------------------------------------------------------------------#include <vcl.h>
#include <iostream.h>
#pragma hdrstop
//---------------------------------------------------------------------------
int k=0;
char * way[4];
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void do24 (int x,int y,int w)
{
switch (w)
{ case 1:k=x+y; way[w]="加"; break;
case 2:k=x-y; way[w]="减"; break;
case 3:k=x*y; way[w]="乘"; break;
case 4: if (x%y==x/y)
{
k=x/y;
way[w]="除";
break;
}
else
{
k=10000;
break;
}
}
}
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int num[4];
int s[4];
cout <<"数字1:";
cin >> num[1];
s[1]=num[1];
cout <<"数字2:";
cin >> num[2];
s[2]=num[2];
cout <<"数字3:";
cin >> num[3];
s[3]=num[3];
cout <<"数字4:";
cin >> num[4];
s[4]=num[4];
for (int e=1;e<5;e++)
{
for (int f=1;f<5;f++)
{
for (int g=1;g<5;g++)
{
for (int a=1;a<5;a++)
{
for (int b=1;b<5;b++)
{
if (b==a)
{ }
else
for (int c=1;c<5;c++)
{
if (c==a || c==b)
{
}
else
for (int d=1;d<5;d++)
{
if (d==a || d==b || d==c)
{
}
else do24(num[a],num[b],e);
do24(k,num[c],f);
do24(k,num[d],g);
if (k==24)
{
if (num[a]==s[a]&& num[b]==s[b]&& num[c]==s[c]&& num[d]==s[d])
{
cout <<"结果是:";
cout <<num[a];
cout <<way[e];
cout <<num[b];
cout <<way[f];
cout <<num[c];
cout <<way[g];
cout <<num[d];
cout <<"\n";
k=0;
}
else
{
k=0;
}
}
else{
k=0;
}
}
}
}
} }
}
}
[email protected]