csp 201903-2 二十四点
asc码
100分代码
#include<stdio.h>
int main(void){
int n,flag1,k,flag2,h,m;
int a[5]={0},b[4]={0};char c[7];
scanf("%d",&n);
int score[n+1]={0};
for(int i=0;i<n;i++){
flag1=4;flag2=3;//flag1数字指针,2符号指针
scanf("%s",&c);
a[0]=c[0]-'0';a[1]=c[2]-'0';a[2]=c[4]-'0';a[3]=c[6]-'0';
b[0]=c[1];b[1]=c[3];b[2]=c[5];h=3;
for(int j=0;j<h;j++){
if(b[j]=='x'){//140
a[j]=a[j]*a[j+1];
for(k=j+1;k<flag1;k++)a[k]=a[k+1];
for(k=j;k<flag2;k++)b[k]=b[k+1];
flag1--;flag2--;j--;h--;
}
if(b[j]=='/'){//47
a[j]=a[j]/a[j+1];
for(k=j+1;k<flag1;k++)a[k]=a[k+1];
for(k=j;k<flag2;k++)b[k]=b[k+1];
flag1--;flag2--;j--;h--;
}
}
h=flag2;
for(int j=0;j<h;j++){
if(b[j]=='+'){//43
a[j]=a[j]+a[j+1];
for(k=j+1;k<flag1;k++)a[k]=a[k+1];
for(k=j;k<flag2;k++)b[k]=b[k+1];
flag1--;flag2--;j--;h--;
}
if(b[j]=='-'){//45
a[j]=a[j]-a[j+1];
for(k=j+1;k<flag1;k++)a[k]=a[k+1];
for(k=j;k<flag2;k++)b[k]=b[k+1];
flag1--;flag2--;j--;h--;
}
}
if(a[0]==24)score[i]=1;
}
for(int i=0;i<n;i++){
if(score[i]==1)printf("Yes\n");
else printf("No\n");
}
return 0;
}
/*
10
9+3+4x3
5+4x5x5
7-9-9+8
5x6/5x4
3+5+7+9
1x1+9-9
1x9-5/9
8/5+6x9
6x7-3x6
6x4+4/5
*/