[英]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應用程序的一種方法。
創建一個整數索引數組,其中每個問號都有一個值。 換句話說,如果有5個問號,則您的Integer索引數組有5個元素。
遍歷整數索引數組。 換句話說,對於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.