求助大佬看看是哪里错; 题目是418:24点钟

using namespace std;
void work(int k,int l[]);
int n[5],r[5][5];
void print();
int main()
{
	for(int i=0;i<4;i++) cin>>n[i];
	work(4,n);
	cout<<"No anwer!";
	return 0;	
 } 
 void work(int k,int l[])
 {
 	int a,b,q,w,e[5],t;
 	if(k==1){
	 if(l[0]==24) print();}
 	else
 	{
 		for(int i=0;i<3;i++)
 		{
 			for(int j=i+1;j<4;j++)
 			{
 				t=0;
 				for(int y=1;y<=4;y++) {if(y!=i&&y!=j) e[t++]=l[y];
				 };
 				a=n[i];
 				b=n[j];
 				if(a<b) swap(a,b);
 				t=0;
 				r[4-k][1]=a;
 				r[4-k][3]=b;
 				r[4-k][4]=-1;
 				for(int p=1;p<=4;p++)
 				{
 					switch(p)
 					{
 						case 1:r[4-k][4]=a+b;r[4-k][2]=p;break;
 						case 2:r[4-k][4]=a-b;r[4-k][2]=p;break;
 						case 3:r[4-k][4]=a*b;r[4-k][2]=p;break;
						case 4:if(a%b==0&&b!=0) r[4-k][4]=a/b;r[4-k][2]=p;break;
					 }
					 if(r[4-k][4]!=-1)
					 {
					 	e[t]=r[4-k][4]
					 	work(k-1,e);
					 	r[4-k][4]=-1;
					 }
				 }
			 }
		 }
	 }
  } 
void  print()
{
	for(int i=1;i<4;i++)
	{
		for(int j=1;j<4;j++)
		{
			if(j!=2)cout<<r[i][j];
			else
			{
				switch(r[i][j])
				{
					case 1:cout<<"+";break;
					case 2:cout<<"-";break;
					case 3:cout<<"*";break;
					case 4:cout<<"/";break;
				}
			}
		}
	}
	exit(0);
}`

1 条评论

  • @ 2024-2-1 20:03:20

    改了改

    using namespace std;
    void work(int k,int l[]);
    int n[5],r[5][5];
    void print();
    int main()
    {
    for(int i=0;i<4;i++) cin>>n[i];
    work(4,n);
    cout<<"No anwer!";
    return 0;	
    }
    void work(int k,int l[])
    {
    int a,b,q,w,e[5],t;
    if(k==1){if(l[0]==24) print();}
    else
    {
    for(int i=0;i<k-1;i++)
    {
    for(int j=i+1;j<k;j++)
    {
    t=0;
    for(int y=1;y<=k;y++) {if(y!=i&&y!=j) e[t++]=l[y];
    };
    a=l[i];
    b=l[j];
    if(a<b) swap(a,b);
    r[4-k][1]=a;
    r[4-k][3]=b;
    r[4-k][4]=-1;
    for(int p=1;p<=4;p++)
    {
    switch(p)
    {
    case 1:r[4-k][4]=a+b;break;
    case 2:r[4-k][4]=a-b;break;
    case 3:r[4-k][4]=a*b;break;
    case 4:if(a%b==0&&b!=0) r[4-k][4]=a/b;break;
    }
    r[4-k][2]=p;
    if(r[4-k][4]!=-1)
    {
    e[t]=r[4-k][4];
    work(k-1,e);
    r[4-k][4]=-1;
    }
    }
    }
    }
    }
    }
    void  print()
    {
    for(int i=1;i<4;i++)
    {
    for(int j=1;j<4;j++)
    {
    if(j!=2)cout<<r[i][j];
    else
    {
    switch(r[i][j])
    {
    case 1:cout<<'+';break;
    case 2:cout<<'-';break;
    case 3:cout<<'*';break;
    case 4:cout<<'/';break;
    }
    }
    }
    cout<<'='<<r[i][3]<<endl;
    }
    exit(0);
    }
    
    
    • 1