ตัวเลข 4 ตัวใดก็ได้ตั้งแต่ 1 ถึง 13 บวก ลบ คูณ หาร เพื่อคำนวณได้ 24 คะแนน
หลักการดำเนินการ:
1) จัดเรียงและรวมตัวเลข 4 ตัวเข้าด้วยกัน
2) คำนวณความเป็นไปได้ของการเรียงสับเปลี่ยนและการรวมกันแต่ละครั้ง
Cal24.java
นำเข้า java.util.HashSet; นำเข้า java.util.Set; คลาสสาธารณะ Cal24 { ความแม่นยำสองเท่าขั้นสุดท้ายแบบคงที่ส่วนตัว = 0.00001; ส่วนตัวเป้าหมาย int สุดท้ายคงที่ = 24; ดำเนินการ (สตริง [] อินพุต) = new int[4]; for (int i = 0; i < inputs.length; i++) { หลัก [i] = Integer.valueOf(inputs[i]); } return new String[]{calc(digits)}; } การคำนวณสตริงส่วนตัว(final int data[]){ Final Set<String> out = new HashSet<String>(); ชุดค่าผสม = ชุดค่าผสมใหม่ () { @Override protected void handle(int[] result) { Final int[] r = result; ชุดค่าผสม = ชุดค่าผสมใหม่ (){ @Override protected void หมายเลขอ้างอิง (int [] c) { สองเท่า x = r [0]; สำหรับ (int i = 0; i < r.length - 1; i ++) { x = doCalculate (x, r [i + 1], c [i ]); } if(Math.abs(Math.abs(x) - เป้าหมาย) < ความแม่นยำ || Math.abs(Math.abs(1/x) - เป้าหมาย) < ความแม่นยำ){ StringBuilder sb = ใหม่ StringBuilder(); สำหรับ (int j = 0; j < r.length; j++) { sb.append(r[j]); if(j != r.length - 1){ sb.append(getOperation(c[ j])); } } out.add(sb.toString()); oper.combine(ใหม่ int[]{0, 1, 2, 3}, data.length - 1, จริง); digit.combine(data); StringBuilder(); /n"); } return sb.toString(); } doCalculate คู่ส่วนตัว (double x, double y, การดำเนินการ int){ switch (การทำงาน) { กรณี 0: return x + y; กรณีที่ 1: return x - y; กรณีที่ 2: return x * y; กรณีที่ 3: return x / y; ค่าเริ่มต้น: return 0; } } ) { กรณีที่ 0: กลับ "+"; กรณีที่ 1: กลับ "-"; กรณีที่ 2: กลับ "*"; กรณีที่ 3: กลับ "/"; main(String[] args) { System.out.println(ใหม่ Cal24().calc(ใหม่ int[]{1, 5, 5, 5}) }}COMBINATION.java
การรวมคลาสนามธรรมสาธารณะ { ส่วนตัวบูลีนรวม = 0; โมฆะสาธารณะรวม (int data []) { รวม (data, data.length, false); } โมฆะสาธารณะรวม (int data [], int count) { รวม (ข้อมูล, นับ, เท็จ); } โมฆะสาธารณะรวม (int data [], นับ int, ซ้ำบูลีน) { this.repeat = ทำซ้ำ; int times = data.length; (int)Math.pow(จำนวนครั้ง); for (int i = 0; i < size; i++) { int[] result = toArray(data, i, count); ผลรวม ++; } } ส่วนตัว int[] toArray(int data[], int i, int count){ int [] indices = new int[count]; data.length; for (int j = 0; j < count; j++) { int temp = 0; if(i > 0){ temp = i%times; i = (i - temp)/ครั้ง; ] = temp; } if(!repeat){ //ลบการซ้ำซ้อนสำหรับ (int x = 0; x < count; x++) { for(int y = 0; y < count; y++){ if(x != y){ if(indices[x] == indices[y]) กลับ null; int [] result = new int[count]; x++) { int ที่เลือกไว้ = data[indices[x]]; ผลลัพธ์);}ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าทุกคนจะชอบมัน