Например, у вас есть отдельные длины N и W, которые избыточны, так как они всегда должны быть равны. Я думаю, что проблема, которую вы наблюдаете, связана с вашим else if
. Вы проверяете, меньше ли текущий вес, чем количество предметов, что на самом деле не имеет смысла. Вероятно, это должно быть что-то вроде else if(j-wt[i]>=0)
, поскольку вы пытаетесь определить, можете ли вы вычесть текущий вес wt[i]
из текущей суммы j
и получить действительный (в границах) результат. Я предполагаю, что вы получаете segfault или подобное, потому что вы пытаетесь получить доступ к dyna[i-1][j-wt[i]]
, когда, например, i
и j
равны 1, а wt[i]
равно 10, поскольку dyna[0][-9]
является (вероятно) неразделенной памятью.