มันติดตรงไหนอะครับโค้ดจาวาข้อนี้ช่วยแก้หน่อยนะครับช่วยอธิบายโค้ดด้วยนะครับ

กระทู้คำถาม
ย้อนกลับไปเมื่อสมัยประเทศไทยขายก๊วยเตี๋ยวชามละหนึ่งบาท วันที่ด.ญ.ติ๋ว ไปโรงเรียนวันแรก แม่เปรมจิตให้เหรียญบาท 1 เหรียญ วันถัดมาแม่ก็ให้เหรียญ
บาท 1 เหรียญอีก ปรากฎว่า ด.ญ.ติ๋ว ร้องไห้หนักมาก บอกว่าแม่ไม่เอาเหรียญบาทหนึ่งเหรียญแบบเดิม แม่จึงหยิบเหรียญห้าสิบสตางค์ไป 2 เหรียญ
ด.ญ.ติ๋ว จึงหยุดร้อง แล้วเดินทางไปโรงเรียน
   ตอนเที่ยงของวันนั้นหลังจากทำงานบ้านเสร็จ แม่เปรมจิตคิดว่าต้องเตรียมเหรียญอย่างไรไม่ให้ซ้ำกับวันก่อนๆ เพื่อไม่ให้ลูกร้องในวันพรุ่งนี้และ
วันต่อๆไป และแม่ก็มองข้ามช็อทไปด้วยว่าค่าขนม 1 บาท  จะให้แบบไม่ซ้ำกันได้  4  วัน  คือ
1. 1.00 x 1     2. 0.50 x 2    3. 0.25 x 4  4. 0.25 x 2  +  0.05 x 1
  และแล้วแม่ก็เริ่มติดลม เริ่มคิดกรณีอื่นๆด้วย เช่นถ้าให้ลูก  1.25  บาทจะได้กี่วัน?  แล้วถ้าเป็น  1.75  บาทล่ะ?
  ช่วยแม่ของติ๋วนับวันที่จะให้เงินลูก ไปโรงเรียนโดยที่ลูกไม่ร้องไห้  โดยจะให้เฉพาะเหรียญสลึง  เหรียญ 50 สตางค์ และเหรียญบาท

input
  จำนวนเงินที่แม่ให้เป็นเลขที่หารด้วย 0.25 ลงตัว
output
  จำนวนวันที่ให้เงินลูกโดยไม่ใช่เหรียญชุดเดิม
Sample Input
1.75
Sample Output
6


แล้วถ้ามันใส่ 3 แล้วผลออกมามันได้ 16 แต่ใช้เครื่องคิดเลขคิดได้ 11 อะครับมันติดตรงไหนหรอครับช่วยอธิบายโค้ดหน่อยได้ไหมครับพอดีไม่ค่อยเข้าใจ


import java.util.Scanner;

public class TestProject {

    static int cnt = 0, n;
    static double money;
    static double[] x = {0.25, 0.5, 1.0, 5.0, 10.0};

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        money = sc.nextDouble();
        n = (int) (money / 0.25);
        double[][] A = new double[n][x.length];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < x.length; j++) {
                A[j] = x[j];
            }
        }
        day(A, 0, 0, 0);
        System.out.println(cnt);
    }

    public static void day(double[][] A, double cur, int path, int j) {
        for (int i = 0; i < x.length; i++) {
            if (path + i >= n || j + i >= x.length) {
                return;
            }
            double New = A[path + i][j + i] + cur;
            if (New > money) {
                return;
            }
            if (New == money) {
                cnt++;
            } else {
                day(A, New, path + i, j + i);
            }
        }

    }
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่