CCF二十四点---竟然实现人工智能???肿么回事?

这是一个简单的题目,为什么拿出来说一下?

因为发现了新大陆

我们先看看c++的vector容器做法

#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
vector<int> num;
vector<char> sym;
int main(){
    ios::sync_with_stdio(false); 
    int n;
    cin>>n;
    while(n--){
	  	string str;
	  	cin>>str;
	  	num.clear();
	  	sym.clear();
	  	for(int i=0;i<4;i++){
	   	   num.push_back(str[i*2]-'0');
	   	   if(i<3) sym.push_back(str[2*i+1]);
	  	}
	  	for(int i=0;i<sym.size();i++){
	   	   if(sym[i]=='x'){
	    		int temp=num[i]*num[i+1];
	    		num.erase(num.begin()+i+1);
	    		num.erase(num.begin()+i);
	    		num.insert(num.begin()+i,temp);
	    		sym.erase(sym.begin()+i);
	    		i--;
	   	   }
	   	   else if(sym[i]=='/'){
	    		int temp=num[i]/num[i+1];
	    		num.erase(num.begin()+i+1);
	    		num.erase(num.begin()+i);
	    		num.insert(num.begin()+i,temp);
	    		sym.erase(sym.begin()+i);
	    		i--;    
	   	   }
	  	}
	    int ans=num[0];
	  	for(int i=0;i<sym.size();i++){
	   	   if(sym[i]=='+') ans+=num[i+1];
	   	   else if(sym[i]=='-') ans-=num[i+1];
	  	}
	  	if(ans==24) cout<<"Yes"<<endl;
	  	else   cout<<"No"<<endl;
    } 
    return 0;
}

这是我个人认为的c++来做的最方便的一种方法,比起stack,vector的增删使得四则运算的过程更为清晰,更容易去模拟!

python_eval()函数杀我!!!太强了呀!

n = int(input())
while n:
    print('Yes' if eval(input().replace('x', '*').replace('/', '//')) == 24 else 'No')
    n -= 1

你没有看错,python四行就给你秒了

python思路

这里的思路很新奇,就是把x和/换掉变成计算机认识的符号*和//(转义字符的/),然后把字符串当成计算式给电脑自己计算

总而言汁,变成字符串给电脑自己算,人工智能呀!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值