- C++
我又来求助了
- 2024-2-1 19:22:40 @
求助大佬看看是哪里错; 题目是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 条评论
-
2023zhangzhuoran LV 6 @ 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