社区
C语言
帖子详情
6*6阵列问题
sgdlihongwei
2005-06-28 08:50:21
问题:一个6*6的整数矩阵(比如数组int a[6][6]),从中取出6个数,这6个数处在不同行不同列中,使得6个数的和最大,写出算法输出这6个数的位置。
我自己用回溯法写了一天了,也不知道哪里有问题,没有写出来。请教高手具体给出个代码来,最好是c格式的。不胜感激!
...全文
205
5
打赏
收藏
6*6阵列问题
问题:一个6*6的整数矩阵(比如数组int a[6][6]),从中取出6个数,这6个数处在不同行不同列中,使得6个数的和最大,写出算法输出这6个数的位置。 我自己用回溯法写了一天了,也不知道哪里有问题,没有写出来。请教高手具体给出个代码来,最好是c格式的。不胜感激!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
foochow
2005-06-29
打赏
举报
回复
//这个不是和N皇后问题差不多~~~~~
//数组数据随机生成的,你改成固定的就可以
#include<iostream>
#include<ctime>
using namespace std;
const int n=6;
int col[n+1];
int b[n+1];
int d[n+1];
int main()
{
int a[n][n];
int i,j;
srand(time(0));
for(i=0;i<n;++i)
for(j=0;j<n;++j)a[i][j]=rand()%20;
for(i=0;i<=n;++i)b[i]=1;
int good=1,m=1;
col[1]=1,col[0]=0;
int temp=0;
do{
if(good)
{
if(m==n)
{
int tent=0;
for(j=1;j<=n;++j)tent+=a[col[j]-1][j-1];
if(tent>temp)
{
temp=tent;
memcpy(d,col,sizeof(col));
}
while(col[m]==n)
{
--m;
b[col[m]]=1;
}
col[m]++;
}
else
{
b[col[m]]=0;
col[++m]=1;
}
}
else
{
while(col[m]==n)
{
--m;
b[col[m]]=1;
}
col[m]++;
}
good=b[col[m]];
}while(m!=0);
cout<<"列"<<" "<<"行"<<endl;
for(j=1;j<=n;++j)cout<<j<<" "<<d[j]<<"\n";
cout<<endl;
cout<<"和为:"<<temp<<endl;
for(j=1;j<=n;++j)cout<<a[d[j]-1][j-1]<<" ";
cout<<endl;
system("PAUSE");
return 0;
}
herryhuang
2005-06-29
打赏
举报
回复
他的这个算法事实上就是穷举了一遍,
sgdlihongwei
2005-06-29
打赏
举报
回复
to Herry兄弟,这个不是作业贴了。这个是匈牙利匹配算法的一个子模块。如果用穷举的话,那么算法的优势就无从体现了。
sgdlihongwei
2005-06-29
打赏
举报
回复
too 感谢恰似你的温柔兄弟!!
herryhuang
2005-06-28
打赏
举报
回复
穷举!你写了一天?代码在哪儿,贴上来,现在新规矩,凡是说自己没做出来的,都要贴代码,要不就是作业贴。
Glasterfs 分布式网络文件系统
:磁盘
阵列
,硬盘(块存储主要是将裸磁盘空间整个映射给主机使用的) 2)文件存储:FTP、NFS服务器(解决文件无法共享的
问题
) 3)对象存储:内置大容量硬盘的分布式服务器(解决容量、性能、可靠性等
问题
) 多台...
IC基础(六):3x3脉动
阵列
计算矩阵相乘
本文是在看了一个博客之后才知道怎么做的,就是这个博客FPGA脉动
阵列
的设计,可惜的是这个博客是转载的,原博客已经找不到了。但是其介绍的还是很详细的,在次基础上我完成了自己的的3*3脉动
阵列
的设计。本文后面会...
DELL 服务器 PCI-E 6IR 通道卡 6I
阵列
卡8口SAS SATA (整理)
DELL 服务器 PCI-E 6IR 通道卡 6I
阵列
卡8口SAS SATA 1、SAS
阵列
卡,开机的时候,按CTRL+A进入设置,一般是这样。如果没线没硬盘,里面就看不到硬盘的盘符。2、DELL原装 6I sas 8口
阵列
卡/256M缓存 支持RAID 0/1/10/...
无符号
阵列
乘法器构建补码
阵列
乘法器(logisim)
利用logisim构建一个6 * 6的补码
阵列
乘法器,具有十一位输出。 实现过程及原理 思路:首先对于补码的运算来说,关键就是要将符号位与数值位区分开来,如果这个数是一个正数,那么就直接用数值位进行相应的运算,然后...
FIFO法生成3*3
阵列
-----图像处理
FIFO法生成3*3
阵列
-----图像处理 原理 采用两个FIFO对数据进行缓存,两个FIFO输出的数据加上原始的图像数据构成三行数据(目的是取出3 * 3
阵列
中的3行),然后再对三行数据分别进行打三拍操作(目的是取出3行中的每3...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章