24点 c++
#include <bits/stdc++.h>
using namespace std;
typedef int arr[4];
bool flag;
arr d;
int r[100][100];
void dfs(int n,arr d)
{
int a,b,i,j,k,p,t;
arr c;
if (n==1 && d[0]==24) {
cout<<"1"<<endl;
exit(0) ;
}
else
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++){
a=d[i] ; b= d[j];
if (a<b) swap(a,b);
t=0;
for (k=0;k<n;k++)
if (k!=i && k!=j) c[t++]=d[k];
r[4-n][0]=a;
r[4-n][2]=b;
r[4-n][3]=-1;
for ( p=0;p<4;p++){
switch(p){
case 0:r[4-n][3]=a+b; break;
case 1:r[4-n][3]=a-b; break;
case 2:r[4-n][3]=a*b; break;
case 3: if (b!=0) r[4-n][3]=a/b;break;
}
if (p==3 && b==0) break;
if (p==3 && a % b!=0) break;
r[4-n][1]=p;
c[t]=r[4-n][3];
dfs(n-1,c);
}
}
}
int main()
{
int i;
char a[3];
for (i=0;i<4;i++) {
cin>>a;
if(strlen(a)>1) d[i]=10;
else if(a[0]=='J') d[i]=11;
else if(a[0]=='Q') d[i]=12;
else if(a[0]=='K') d[i]=13;
else if(a[0]=='A') d[i]=1;
else d[i]=a[0]-'0';
}
dfs(4,d);
cout<<"0"<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef int arr[4];
bool flag;
arr d;
int r[100][100];
void dfs(int n,arr d)
{
int a,b,i,j,k,p,t;
arr c;
if (n==1 && d[0]==24) {
cout<<"1"<<endl;
exit(0) ;
}
else
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++){
a=d[i] ; b= d[j];
if (a<b) swap(a,b);
t=0;
for (k=0;k<n;k++)
if (k!=i && k!=j) c[t++]=d[k];
r[4-n][0]=a;
r[4-n][2]=b;
r[4-n][3]=-1;
for ( p=0;p<4;p++){
switch(p){
case 0:r[4-n][3]=a+b; break;
case 1:r[4-n][3]=a-b; break;
case 2:r[4-n][3]=a*b; break;
case 3: if (b!=0) r[4-n][3]=a/b;break;
}
if (p==3 && b==0) break;
if (p==3 && a % b!=0) break;
r[4-n][1]=p;
c[t]=r[4-n][3];
dfs(n-1,c);
}
}
}
int main()
{
int i;
char a[3];
for (i=0;i<4;i++) {
cin>>a;
if(strlen(a)>1) d[i]=10;
else if(a[0]=='J') d[i]=11;
else if(a[0]=='Q') d[i]=12;
else if(a[0]=='K') d[i]=13;
else if(a[0]=='A') d[i]=1;
else d[i]=a[0]-'0';
}
dfs(4,d);
cout<<"0"<<endl;
return 0;
}