zoukankan      html  css  js  c++  java
  • CCF--二十四点

    陷阱很多 要细心 ,每一步都要清晰 不然很容易就报错

    1. 这里的乘号为 x
    2. 一个符号对应一个数字 符号用好之后 还剩一个数字
    3. 四则运算都要用数字进行
    4. debug真是个好东西
    import java.util.Scanner;
    import java.util.Stack;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int n = sc.nextInt();
    		for (int i = 0; i < n; i++) {
    			String str = sc.next();
    			if (is_24(str))
    				System.out.println("Yes");
    			else
    				System.out.println("No");
    		}
    	}
    
    	public static boolean is_24(String str) {
    		Stack<String> stack = new Stack<String>();
    		Stack<Integer> nums = new Stack<Integer>();
    		int ans = 0;
    		for (int i = 0; i < str.length(); i++) {
    			if (str.charAt(i) == '+')
    				stack.push(str.charAt(i) + "");
    			else if (str.charAt(i) == '-')
    				stack.push(str.charAt(i) + "");
    			else if (str.charAt(i) == 'x') {
    				int flag = str.charAt(i + 1) - '0';
    				int temp = nums.pop() * flag ;
    				nums.push(temp);
    				i++;
    			} else if (str.charAt(i) == '/') {
    				int flag = str.charAt(i + 1) - '0';
    				int temp = nums.pop() / flag;
    				nums.push(temp);
    				i++;
    
    			} else if (str.charAt(i) - '0' <= 9 && str.charAt(i) - '0' >= 0)
    				nums.push(str.charAt(i) - '0');
    		}
    		while (!stack.isEmpty()) {
    			if (stack.peek().equals("-"))
    				ans += nums.pop() * (-1);
    			else if (stack.peek().equals("+"))
    				ans += nums.pop();
    			stack.pop();
    		}
    		ans += nums.pop();
    		if (ans == 24)
    			return true;
    		else
    			return false;
    	}
    }
    
  • 相关阅读:
    《JavaScript高级程序设计》学习笔记12篇
    JS学习笔记12_优化
    JS学习笔记11_高级技巧
    JS学习笔记10_Ajax
    JS学习笔记9_JSON
    JS学习笔记8_错误处理
    为什么要在列表组件里写 Key ?
    var、let 和 const 的区别以及暂时性死区
    小程序性能优化要点
    Node require() 加载规则
  • 原文地址:https://www.cnblogs.com/cznczai/p/11249802.html
Copyright © 2011-2022 走看看