CCF二十四点巧解(100)c/c++
程序思想:1+3x2/8 检测乘号和除号,因为乘除肯定是优先计算,可以将数组拆分成1+0+6/8;这样对顺序检测也加强了方便
也就是将a[i+1]就变为a[i]*a[i+1],a[i]变成0,b[i]变成’+’,当b[i-1]为负号时,需要注意一下,例如1-3x2/8拆分成
1-(0+6)/8 去括号 这就当做1-0-6/8,所以b[i]=’-'这样就解决了问题
特别是只需要一次遍历就可以把乘法和除法检测出来,时间复杂度极小,效率很高
注意事项,因为题目要求是两个整数相除等于整数,
开始是将所有数变成浮点数来计算的,导致只有70分,后面将所有数据改为整型数组就100,又是细节问题
#include<stdio.h>
#include<malloc.h>
int main(){
int n;
scanf("%d",&n);//输入的次数
int*c=(int*)calloc(n,sizeof(int));//此数组用来记录yes或者No, 1表示yes,0表示No
int m=n;
while(n>0){
int a[4]={
0}