CCF CSP 201903 02 二十四点游戏

CCF CSP 201903 02 二十四点游戏

试题编号: 201903-2
试题名称: 二十四点
时间限制: 1.0s
内存限制: 512.0MB
问题描述:


 

我的思路是  遇到加减法(减法的减数处理成负数最后只做加法 不然回wr)压栈 遇到乘除法  计算  完成之后 把 栈排空 

问题找到了   减法没有做特殊处理  导致的错误  现在的代码是过了的

#include
#include

using namespace std;

stack num;
int  val;
char ch;
int val2;

void slove(string s){
	for(int i = 0; i < s.length();i++){
		if(s[i]>='0' &&s[i] <='9'){
			val = s[i]-'0';
			num.push(val);
		}else if(s[i] == '+'||s[i] == '-'){
			if(s[i] == '-'){
				val = 0-s[++i]+'0';
				num.push(val);
			}
		}else if(s[i] == 'x' ||s[i] == '/'){
			ch = s[i++];
			val = s[i]-'0';
			if(ch == 'x'){	
				val = val*num.top();
				num.pop();
				num.push(val);
			}else{
				val = num.top()/val;
				num.pop();
				num.push(val);
			}
					
		}
	}
	val= 0;
	while(!num.empty()){
			val += num.top();
			num.pop();
	}
	if(val == 24){
		printf("Yes\n");
	}else{
		printf("No\n");
	}
}

int main()
{
	int n;
	string s;
	scanf("%d",&n);
	while(n--){
		cin  >> s;
		slove(s); 
	}
	return 0;
}
 

 

你可能感兴趣的:(CCF,CSP)