1 条题解

  • 0
    @ 2025-10-10 19:32:48

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    
    int a[4];
    string t = "+-*"; 
    bool f;
    
    bool calc(string r){
    	string o = r;
    	int b[4];
    	for(int i = 0;i < 4;i++){
    		b[i] = a[i];
    	}
    	
    	for(int i = 0;i < r.size();i++){
    		if(r[i] == '*'){
    			b[i+1] = b[i+1] * b[i];
    			b[i] = 0; 
    			if(i == 0) r[i] = '+';
    			else r[i] = r[i-1];
    		}
    	}
    	
    	int s = b[0];
    	for(int i = 1;i < 4;i++){
    		if(r[i-1] == '+') s = s + b[i];
    		else if(r[i-1] == '-')s = s - b[i];
    	}
    	
    	if(s == 24){
    		f = true;
    	}
    } 
    
    //递归所有的运算情况 
    void dfs(string r){
    	if(r.size() == 3){
    		//cout<<r<<endl;
    		//每产生一个运算,就用这个运算要验证能否得到24点 
    		calc(r);
    		return;
    	}
    	for(int i = 0;i < t.size();i++){
    		dfs(r+t[i]);
    	}
    }
    
    
    
    int main(){
        int n,c = 0;
        cin>>n;
        for(int i = 1;i <= n;i++){
        	for(int j = 0;j < 4;j++){
        		cin>>a[j];
    		}
    		
    		f = false; 
    		dfs("");
    		if(f == true) c++;
    	} 
    	cout<<c;
        return 0;
    }
    
    • 1

    信息

    ID
    873
    时间
    1000ms
    内存
    512MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者