倾家荡产求 动态规划法解决矩阵连乘问题、回溯法解决稳定婚姻问题 算法的源码

dvhome 2005-05-16 10:42:47
在网上找了好久,都没有找到这两个算法的源码,听说有一本书里面有的,但我们这个小城市找不到……

我用全部分数求

动态规划法解决矩阵连乘问题

回溯法解决稳定婚姻问题

的源码(C或C++的源码都可以),要求能通过编译(输入数据,能输出结果)

在此感谢各位大侠的帮助啦~~~~


...全文
469 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
dvhome 2005-05-20
  • 打赏
  • 举报
回复
flying_dancing(小混混-_-) 大侠:

你好~

你说的第二份代码,能不能帮我补充完整啊??

我需要 测试数据、源程序、输出结果

只有上面的代码,我还是没有办法交差啊……


麻烦你了…………
dvhome 2005-05-20
  • 打赏
  • 举报
回复
还有“回溯法解决女子稳定婚姻问题”

哪位大侠能提供一份源程序吗???


再次感谢了~!!!
dvhome 2005-05-20
  • 打赏
  • 举报
回复
感谢 flying_dancing(小混混-_-) 大侠的关注


你给的链接我去看了,以前也看过类似的文章(我手头上也有一本书,讲算法的),但是看得不是很懂啊(PS:我本身不是这个专业的,所以一下子要去接受那么多东西,有些难度……)我现在急需一个源程序……

您能提供一份给我吗???


再次感谢~@!
flying_dancing 2005-05-19
  • 打赏
  • 举报
回复
呵呵 没来看不知道 问了怎么多!!!我先道歉,第一个代码我帖错了....
你先看看这个http://algorithm.diy.myrice.com/problems/problem_set/matrix_chain_mul/solution.htm#MATRIX_CHAIN_ORDER

我的第二个代码就做到第三点,4.构造最优解这点没做.....
当然也是作业了,只是我偷懒了...
dvhome 2005-05-19
  • 打赏
  • 举报
回复
flying_dancing(小混混-_-) 大侠:

我想向你请教一下,你发的源代码,是直接求矩阵连乘的吗??

就是说,是不是直接给n个矩阵,就可以用动态规划法求出矩阵的乘积??

谢谢您的帮助了~~~


能给我这样的源码吗??还有测试数据和输出结果……
jingyueid 2005-05-19
  • 打赏
  • 举报
回复
动态规划法解决矩阵连乘问题

回溯法解决稳定婚姻问题

楼主能给描述一下问题吗?
dvhome 2005-05-19
  • 打赏
  • 举报
回复
如果分数不够,我可以想办法来加~!!!

只是我这个题目时间比较急,所以先麻烦各位大侠了……

还请各位大侠给出源程序的时候,顺便把你们的测试数据和输出结果发上来好吗???


再次感谢~~~
dvhome 2005-05-19
  • 打赏
  • 举报
回复
我用VC++6.0中文版的新建一个win32程序

然后编译上面的那个代码( flying_dancing(小混混-_-) 大侠给的第一份代码),编译成功了,没有发现错误,也可以运行

但是,当我输入数据以后,程序就出错了……

大侠,能不能给我以上程序的测试数据和测试结果啊??

太谢谢你了~~~



另外,那个稳定婚姻问题,有没有哪位大侠能帮帮我哦??


再次感谢~~~
flying_dancing 2005-05-18
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
#include <ctime>
#include <windows.h>


int main()
{

int n;
cout<<"input the n:"<<endl;
cin>>n;
int *p=new int [n+1];
int **m=new int *[n+1];
int **s=new int *[n+1];
for(int i=0;i<=n;i++)
{
m[i]=new int [n+1];
s[i]=new int [n+1];
}
cout<<"intput N*M(n+1):"<<endl;
for(i=0;i<=n;i++)
cin>>p[i];
int t;
if(n==2)
{ t=p[0]*p[1]*p[2];
cout<<t;
}
else
{

for ( i = 1; i <=n; i++) m[i][i] = 0;
for (int r = 2; r <=n; r++)
for (int i = 1; i <=n - r+1; i++)
{
int j=i+r-1;
m[i][j] = m[i+1][j]+ p[i-1]*p[i]*p[j];
s[i][j] = i;
for (int k = i+1; k <j; k++)
{
t = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
if (t < m[i][j])
{
m[i][j] = t;
s[i][j] = k;
}
}

}
cout<<t<<endl;
cout<<m[1][n]<<endl;
}
for(i=0;i<10000;i++)
for(int j=0;j<10000;j++)
{int k=0;
k+=i;}
delete [] p;
for(i=0;i<=n;i++)
{
delete m[i];
delete s[i];
}
system("pause");
return 0;
}//这是我的作业..算连乘次数的
zhang_jiang 2005-05-18
  • 打赏
  • 举报
回复
“回溯法解决女子稳定婚姻问题”是什么? 能描述一下?
graciexy 2005-05-18
  • 打赏
  • 举报
回复
当然,楼上那个是CPP写的,我也有,不过也是CPP写的
dvhome 2005-05-18
  • 打赏
  • 举报
回复
上面的那个程序要怎么编译哦???

我用TUBRO C好像不行哦

要怎么弄???我是菜鸟,还请大侠指教~~~
dvhome 2005-05-18
  • 打赏
  • 举报
回复
太感谢 flying_dancing(小混混-_-) 大侠的帮助了


我去编译看看能不能通过……

还有一个用“回溯法解决女子稳定婚姻问题”的源码,哪位大侠有吗???


再次感谢~~~!!!!
dvhome 2005-05-17
  • 打赏
  • 举报
回复
很急啊~~~

各位大侠帮帮忙啊!~~~


另外,上面的回溯法的题目应该是

“回溯法解决女子稳定婚姻问题”


感谢各位大侠了!!~~~
flying_dancing 2005-05-17
  • 打赏
  • 举报
回复
http://search.csdn.net/Expert/topic/2388/2388048.xml?temp=.8202021
我帮你找了一个...看看
但我上面的也可以行
flying_dancing 2005-05-17
  • 打赏
  • 举报
回复
上面2个的
动态规划法解决矩阵连乘问题
//先把最优的乘法确定了,然后调用两个相乘的就可以了
flying_dancing 2005-05-17
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
#include <string>
string mult(string,string);
string stringadd(string ,string);
string getstr(int);
void main()
{
string s1,s2,s3;
cout<<"请输入被乘数"<<endl;
cin>>s1;
cout<<"请输入乘数"<<endl;
cin>>s2;
s3=mult(s1,s2);
cout<<s3;

}

string stringadd(string a,string b)
{
int k=0,m,n;
int a1,a2;
string result;
m=a.length();
n=b.length();
if(m<n)
stringadd(b,a);
else
for(int i=0;i<m;i++)
{
a1=a[m-i+1]-48;
if(n-i<=0)
a2=0;
a2=b[m-i+1]-48;
k=k+a1+a2;
a[m-i+1]=k/10+48;
k=k%10;
}
if(k>0)
result='1'+a;
else
result=a;
return result;
}

string mult(string s1,string s2)
{
int k=0,m,n;
string result,a,b,c,d;
m=s1.length();
n=s2.length();
if(m<n)
result=mult(b,a);
else
k=m/2;
a=s1.substr(1,m-k);
b=s1.substr(m-k+1,k);
c=s2.substr(1,n-k);
d=s2.substr(n-k+1,k);
result=stringadd(stringadd(mult(a,c)+getstr(k+k),mult(b,d)),stringadd(mult(a,d),mult(b,c))+getstr(k));

return result;

}

string getstr(int m)
{
int i;
string a=" ";

for(i=0;i<m;i++)
{
a=a+'0';
}
return a;
}
mostideal 2005-05-17
  • 打赏
  • 举报
回复
呵呵,,我到有本书,,不过是用java描述的。。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧