loading请求处理中...
10大优享服务
62项会员特权

这段程序修改的方法是什么?

问题补充:#include
#include
using namespace std;
const double MIN=1E-6;
void Print(int *Rank,double *FourNum)
{
 for(int i=0;i<4;i++)
  cout cout}
void Calculate_24(int *Rank,double *FourNum,char *Oper,int i,int j,int k,bool &def)
{
 double res=0;
 switch(i)
 {
 case 0:
  res=FourNum[Rank[0]]+FourNum[Rank[1]];
  break;
 case 1:
  res=FourNum[Rank[0]]-FourNum[Rank[1]];
  break;
 case 2:
  res=FourNum[Rank[0]]*FourNum[Rank[1]];
  break;
 case 3:
  res=FourNum[Rank[0]]/FourNum[Rank[1]];
  break;
 }
 switch(j)
 {
 case 0:
  res=res+FourNum[Rank[2]];
  break;
 case 1:
  res=res-FourNum[Rank[2]];
  break;
 case 2:
  res=res*FourNum[Rank[2]];
  break;
 case 3:
  res=res/FourNum[Rank[2]];
  break;
 }
 switch(k)
 {
 case 0:
  res=res+FourNum[Rank[3]];
  break;
 case 1:
  res=res-FourNum[Rank[3]];
  break;
 case 2:
  res=res*FourNum[Rank[3]];
  break;
 case 3:
  res=res/FourNum[Rank[3]];
  break;
 }
 if(fabs(res-24)>MIN)
  return;
 else
 {
  def=true;
  for(int num=1;num<=7;num++)
  {
    switch(num)
    {
    case 1:
     cout     break;
    case 3:
     cout     break;
    case 5:
     cout     break;
    case 7:
     cout     break;
    case 2:
     cout     break;
    case 4:
     cout     break;
    case 6:
     cout     break;
    }
  }
  cout }
}
void SearchTree(int Depth,int *Rank,double *FourNum,char *Oper,bool &def)
{
 int i,j,k;
 if(Depth==4)
 {
  for(i=0;i<4;i++)
   for(j=0;j<4;j++)
    for(k=0;k<4;k++)
     Calculate_24(Rank,FourNum,Oper,i,j,k,def);
 }
 else
 {
  for(i=0;i<4;i++)
  {
   int Remember=0;
   for(j=0;j   {
    if(Rank[j]==i)
     Remember=1;
   }
   if(Remember)
    continue;
   Rank[Depth]=i;
   SearchTree(Depth+1,Rank,FourNum,Oper,def);
  }
 }
}
int main()
{
  int  a[4],b[4],time;
 char c[4]={'+','-','*','/'};
 bool def=false;
 cin>>time;
while(time--)
{
 for(int i=0;i<4;i++)//输入测试数据
  cin>>a[i];
 cout<"所有可能的结过:" SearchTree(0,b,a,c,def);
 if(def==false)
   cout<"No"}
 return 0;
}
提问者:野生鱼 2回答 浏览次数:1496 提问时间: 2021/12/01 11:48
提问者采纳
#include
#include
using namespace std;
const double MIN=1E-6;
void Print(int *Rank,double *FourNum)
{
for(int i=0;i<4;i++)
cout cout}
void Calculate_24(int *Rank,double *FourNum,char *Oper,int i,int j,int k,bool &def)
{
double res=0;
switch(i)
{
case 0:
res=FourNum[Rank[0]]+FourNum[Rank[1]];
break;
case 1:
res=FourNum[Rank[0]]-FourNum[Rank[1]];
break;
case 2:
res=FourNum[Rank[0]]*FourNum[Rank[1]];
break;
case 3:
res=FourNum[Rank[0]]/FourNum[Rank[1]];
break;
}
switch(j)
{
case 0:
res=res+FourNum[Rank[2]];
break;
case 1:
res=res-FourNum[Rank[2]];
break;
case 2:
res=res*FourNum[Rank[2]];
break;
case 3:
res=res/FourNum[Rank[2]];
break;
}
switch(k)
{
case 0:
res=res+FourNum[Rank[3]];
break;
case 1:
res=res-FourNum[Rank[3]];
break;
case 2:
res=res*FourNum[Rank[3]];
break;
case 3:
res=res/FourNum[Rank[3]];
break;
}
if(fabs(res-24)>MIN)
return;
else
{
def=true;
for(int num=1;num<=7;num++)
{
switch(num)
{
case 1:
cout break;
case 3:
cout break;
case 5:
cout break;
case 7:
cout break;
case 2:
cout break;
case 4:
cout break;
case 6:
cout break;
}
}
cout }
}
void SearchTree(int Depth,int *Rank,double *FourNum,char *Oper,bool &def)
{
int i,j,k;
if(Depth==4)
{
for(i=0;i<4;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
Calculate_24(Rank,FourNum,Oper,i,j,k,def);
}
else
{
for(i=0;i<4;i++)
{
int Remember=0;
for(j=0;j {
if(Rank[j]==i)
Remember=1;
}
if(Remember)
continue;
Rank[Depth]=i;
SearchTree(Depth+1,Rank,FourNum,Oper,def);
}
}
}
int main()
{
int b[4],time;
double a[4];
char c[4]={'+','-','*','/'};
bool def=false;
cin>>time;
while(time--)
{
for(int i=0;i<4;i++)//输入测试数据
cin>>a[i];

cout<"所能结:" SearchTree(0,b,a,c,def);
if(def==false)
cout<"No"}
return 0;
}

全部回答

问题分类

我 要 回 答 我 要 提 问
问题分类   验证码 换一组