首页 > 编程知识 正文

动态规划背包问题例题,不能用动态规划求解的问题是

时间:2023-05-04 04:05:13 阅读:112826 作者:3411

【动态规划】求组合数的问题又是苦瓜一样的算法作业。 遇到组合数问题时,考虑如何在这个问题上使用动态规划算法,在网上查询后找到了这个公式。

第一个想法是使用双重的for循环,直接从i=m和j=n开始for循环到1。 但是,这样的话,第一个数组都是0,毕竟整个数组没有变化。

于是就有了以下代码:

# includeiostreamusingnamespacestd; int动态(int n,int n ) {int a[m 1][n 1]; for(intI=1; i=m; I )//由于下一个双重for循环需要使用j-1,所以下一个for循环不能从j=0开始,所以在此位置首先将for代入特殊位置(intj=0; j=n; j () if ) j==0||I==j ) ) {a[i][j]=1; }}for(intI=2; i=m; I ) for(intj=1; j=n; j () /赋值也有重复的地方,我不擅长纠正。 对不起if(j==0||I==j ) ) {a[i][j]=1; (elseif(Ji ) ) /特殊情况下,nm a[i][j]=0; } else { a [ I ] [ j ]=a [ I-1 ] [ j ] a [ I-1 ] [ j-1 ]; }}}return a[m][n]; (}int main ) ) while(true ) {int m,n; cout '组合数的m和n(Mn ) :'endl; cinmn; int p; p=动态(m,n ); cout '的结果是: '; coutpendl; }我也不知道有没有特别奇怪

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。