贴一下第二题求骰子和的我的解法,用动态规划做。但不知道为啥最后case通过率是98%, 可能哪里没考虑到

package main

import (
    "fmt"
)
func main() {
    n:=0
    k:=0
    fmt.Scan(&n,&k)
    
    if (n==0 || k==0){
        fmt.Println(0)
        return
    }
    
    arr := make([][14][6]int, k+1)  // 用了前0-n个骰子, 最后一个骰子的某个数朝上,用动态规划的思想
    data := make([][6]int, n) // 
    for i:=0; i<n; i++{
        fmt.Scanln(&data[i][0], &data[i][1], &data[i][2], &data[i][3], &data[i][4], &data[i][5])
        //   fmt.Println(data[i][0], data[i][1], data[i][2], data[i][3], data[i][4], data[i][5]) 
    }
  
    for i:=1; i<=k; i++{
        for x:=0; x<6; x++ {
            if data[0][x] == i {
                arr[data[0][x]][0][x] = 1
            //    fmt.Println(arr[data[0][x]][0][x])
            }
        }
        
        for j:=1; j<n; j++{
            for m:=0; m<6; m++ {
                if data[j][m] >= i {
                    arr[i][j][m] = 0
                }
            }
        }
    }

    for i:=1; i<=k; i++ {
        for j:=1; j<n; j++ {
            for p:=0; p<6; p++ {
                for q:=0; q<6; q++{
                    if i>=data[j][p] {
                        arr[i][j][p] += arr[i-data[j][p]][j-1][q]
                    }
                }
            }
        }
    }
    
    sum := 0
    for i:=0; i<6; i++ {
        sum += arr[k][n-1][i]
    }
    fmt.Println(sum)
}