CCF 201903-2 二十四点 (100)(数组)

 

发现纯为乘除时,计算错误,此时提交为50分

#include<bits/stdc++.h>
#include<iostream>
using namespace std;




int main()
{
	int n;
	cin>>n;

	while(n--)
	{
		int num[4],i,j;
		char op[3];
		double gg=0;
	
	char s[8];
    cin>>s;
        

    for(i = 0; i < 4; i++)
        num[i] = s[i * 2] - '0';
    for(i = 0; i < 3; i++)
        op[i] = s[i * 2 + 1];  
    

	   for(i = 0; i<3;i++)
	   {
	   	if(op[i]=='x')
	   	{
	   		  num[i+1]*=num[i];
	  	   	 num[i]=0;
	  	 	 if(op[i-1]=='x'|| op[i-1]=='/')
						num[i]=1;
				else if(i>0)
				  op[i]=op[i-1];
				  else if(i==0)
				      op[i]='+';
	  	 	   
		}
			 else if(op[i]=='/')
	   	     	{
					num[i+1]=num[i]/num[i+1];	   
					 num[i]=0;
				   if(op[i-1]=='x'|| op[i-1]=='/')
						num[i]=1;
					else if(i>0)
				 		 op[i]=op[i-1];	
				 	else if(i==0)
				      op[i]='+';
				}
				
				
	   }
	   
	   
	   	/* 上段 乘除计算过去错误的50分错误写法,乘除先后乱了 ,应该移位前后加减运算符 
	
	    for(i = 0; i<3;i++)
	   {
	   	if(op[i]=='x')
	   	{
	   		  num[i]*=num[i+1];
	  	 	 num[i+1]=0;
	   		 op[i]='+';

		}
			 else if(op[i]=='/')
	   	     	{
					num[i]/=num[i+1];	   
					 num[i+1]=0;
				   	 op[i]='+';	     	
				}
	   }
	  
	  */ 
	   
	   
	   
	    for(i = 0; i<3;i++)
	   {
	   	if(op[i]=='+')	
	   	{
		   
	   	  gg= num[i]+num[i+1];
	   	  num[i+1]=gg;
		}	 else if(op[i]=='-')
			{
	   	     		gg=num[i]-num[i+1];  	     
					num[i+1]=gg;
			}
	   }


		if(gg==24)
		 cout<<"Yes"<<endl;
		 else
		  cout<<"No"<<endl;
		
	}
	
	
	return 0;
}


/*
3+9+9+3

4x5+2+2

1+4x5+3

6+9/1+9




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



*/

抱歉了老师,我是小菜鸡,只会用数组

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值