n*n矩阵,不同行不同列选n个数 使其和最小

woaigaoxinyu 2010-05-08 10:57:44
我知道用动态规划或者最佳匹配算法可以解决,希望大家实现一下代码,函数参数就是n*n矩阵,输出是那个最小的和
...全文
223 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
LXHSDFZ 2011-05-28
  • 打赏
  • 举报
回复
我会~~~
#include"stdio.h"
#include"iostream.h"
#include"stdlib.h"
#define N 15

void main()
{
int juzhen[N][N];
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
juzhen[i][j]=rand();

for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
cout<<juzhen[i][j]<<" ";
cout<<endl;
}
//先生成一个15*15的矩阵
int min=0,sum=0,k,l,t,m,n,max;
int count[N],same[N],compare[N];

for(i=0;i<N;i++)
{
min=juzhen[i][0];
l=0;
for(j=0;j<N;j++){
if(juzhen[i][j]<min)
{
min=juzhen[i][j];
l=j;
}
}
count[i]=l;
}
//找出每一行的最小值,并记住每一行的最小值的列数
for(i=0;i<N;i++)
cout<<count[i]<<" ";
cout<<endl;
//将每一行最小数的列数输出
for(i=0;i<N;i++)
{
t=count[i];
k=0;
for(j=0;j<N;j++)
{
if(t==count[j])
k++;
}
same[i]=k;
}
//检查每一行最小数在相同一列的次数
for(i=0;i<N;i++)
cout<<same[i]<<" ";
cout<<endl;

for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
if(i==count[j]) break;
if(j==N)
compare[i]=0;
else
compare[i]=1;
}
//检查哪列有最小值哪列没有,并标记。
for(i=0;i<N;i++)
cout<<compare[i]<<" ";
cout<<endl;

for(i=0;i<N;i++)
{
if(compare[i]==0)
{
for(j=0;j<N;j++)
{
if(same[j]>1)
{
max=0;
for(k=0;k<N;k++)
{
if(count[k]==count[j])
if(max<juzhen[k][count[k]])//找出同一列中各行最小数当中最大的数字,兵把他付给没有最小数的该列。
{
max=juzhen[k][count[k]];
m=k;
}
}
}
}
count[m]=i;
}
for(n=0;n<N;n++)
{
t=count[n];
k=0;
for(j=0;j<N;j++)
{
if(t==count[j])
k++;
}
same[n]=k;
}
for(n=0;n<N;n++)
{
for(j=0;j<N;j++)
if(n==count[j]) break;
if(j==N)
compare[n]=0;
else
compare[n]=1;
}
}
for(i=0;i<N;i++)
{
cout<<"第"<<i+1<<"行 第"<<count[i]+1<<"列为"<<juzhen[i][count[i]]<<endl;
sum=sum+juzhen[i][count[i]];
}
cout<<"最终值为:"<<sum<<endl;
}
Xiaoloveliuforever 2010-05-09
  • 打赏
  • 举报
回复
网上资料和源代码很多
lqbk1 2010-05-09
  • 打赏
  • 举报
回复
http://www.tudou.com/programs/view/5owI5r3kzxk
如果楼主看完上面视频还不会自己编一个出来的话,我也无语了……

今天心情不好,不想写代码了,楼主可以理解成我相当菜,根本编不出来╮(╯_╰)╭
woaigaoxinyu 2010-05-09
  • 打赏
  • 举报
回复
这边无高人!

鉴定完毕!
woaigaoxinyu 2010-05-09
  • 打赏
  • 举报
回复
能给完整代码吗,谢啦
[Quote=引用 4 楼 xiaoloveliuforever 的回复:]
网上资料和源代码很多
[/Quote]
woaigaoxinyu 2010-05-09
  • 打赏
  • 举报
回复
这也太繁琐了
[Quote=引用 3 楼 lcl_data 的回复:]
不同行不同列选n个数
选把n皇后的选法全部选出来,在找最小的和?
[/Quote]
十八道胡同 2010-05-08
  • 打赏
  • 举报
回复
不同行不同列选n个数
选把n皇后的选法全部选出来,在找最小的和?
woaigaoxinyu 2010-05-08
  • 打赏
  • 举报
回复
没一个人会吗
woaigaoxinyu 2010-05-08
  • 打赏
  • 举报
回复
每一个人会吗

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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