簡體   English   中英

用Java解決未完成的方程式的算法

[英]Algorithm to solve unfinished equations in Java

我正在嘗試編寫一個程序,當給定未完成的方程式時,將輸出將正常工作的最低位數,或者如果沒有,將返回-1。 我已完成所有輸入,但在此階段我不確定如何繼續。

輸入示例為: 1+1=? 123*45?=5?088-5?*-1=5 19--45=5? ??*??=302?

任何有關如何解決此問題的技巧將不勝感激。

import java.util.Scanner;
import java.util.regex.*;

public class Runes {

    public static void main(String[] args) {


        Scanner sc = new Scanner(System.in);
        int caseNo = sc.nextInt();
        for (int c = 0; c < caseNo; c++) {

            String input = sc.next();
            String re1="([-]?[0-9?]+)"; // -int1 or int1
            String re2="([+\\-*])";     //+ or - or *
            String re3="([-]?[0-9?]+)"; // -int2 or int2
            String re4="(=)";                   // Equals
            String re5="([-]?[0-9?]+)"; // -int3 or int3

            Pattern pattern = Pattern.compile(re1+re2+re3+re4+re5,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
            Matcher matcher = pattern.matcher(input);

            if (matcher.find()) {

                String int1 = matcher.group(1);
                String op1 = matcher.group(2);
                String int2 = matcher.group(3);
                String op2 = matcher.group(4);
                String int3 = matcher.group(5);
                System.out.println(int1 + " " + op1 + " " + int2 + " " + op2 + " " + int3);
            }
        }
    }
}

這是創建Java應用程序的一種方法。

  1. 創建一個整數索引數組,其中每個問號都有一個值。 換句話說,如果有5個問號,則您的Integer索引數組有5個元素。

  2. 遍歷整數索引數組。 換句話說,對於5個問號,值應為(請參見下面的布局)。

  3. 遍歷整數索引數組,用索引值替換問號。

  4. 檢查字符串是否有效。 如果是這樣,請將其保存在列表中。

  5. 循環結束后,打印列表值。

這是第2點的布局。

0, 0, 0, 0, 0
1, 0, 0, 0, 0
...
9, 0, 0, 0, 0
0, 1, 0, 0, 0
...
9, 9, 9, 9, 9

我使用您的輸入示例來創建此輸出。 我在方程式中添加了空格,以使其更易於閱讀。 我手動格式化了此輸出以適合屏幕

1 + 1 = ?  -->  1 + 1 = 2
123 * 45? = 5?088  -->  123 * 456 = 56088
-5? * -1 = 5  -->  No equation exists
19 - -45 = 5?  -->  No equation exists
?? * ?? = 302?  -->  57 * 53 = 3021     53 * 57 = 3021     72 * 42 = 3024     
                     42 * 72 = 3024     48 * 63 = 3024     56 * 54 = 3024     
                     36 * 84 = 3024     84 * 36 = 3024     54 * 56 = 3024     
                     63 * 48 = 3024     55 * 55 = 3025     89 * 34 = 3026     
                     34 * 89 = 3026

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM