| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1201 人关注过本帖
标题:石子合并问题(求助 改错)
取消只看楼主 加入收藏
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
 问题点数:0 回复次数:0 
石子合并问题(求助 改错)
一列石子,公式得到了,用动态规划实现时总是输出0
我实现矩阵连乘算法用动态规划也不能得到正确结果
[code=c]
/*m[i][j]={0 i=j;min{m[i][k-1]+m[k][j]+w(i,j)} i<j}*/
#include <iostream>
using namespace std;
const int N=4;
int a[N]={4,4,5,9};
int m[N][N]={0};
int s[N][N]={0};
int Sum(int a[],int i,int j)//最后一次合并的得分
{
    int temp=0;
    for(int k=i;k<=j;k++)
    {
        temp+=a[k];
    }   
    return temp;
}

void Stone()//动态规划求最小得分
{
    int i,j,r,k,t;
    for(i=0;i<N;i++)
        m[i][i]=0;
    for(r=1;r<N;r++)
    {
        for(i=0;i<N-r;i++)
        {
            j=i+r;
            for(k=i+1;k<j;k++)
            {
                t=m[i][k-1]+m[k][j]+Sum(a,i,j);
                if(t<m[i][j])
                {
                    m[i][j]=t;
                    s[i][j]=k;
                }   
            }   
        }   
    }     
}
        
int main()
{
    Stone();  
    cout<<m[0][N-1]<<endl;  
    return 0;
}    [/code]
搜索更多相关主题的帖子: 石子 改错 
2007-12-22 20:58
快速回复:石子合并问题(求助 改错)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038150 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved