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

woaigaoxinyu 2010-05-08 10:30:28
我知道用动态规划或者最佳匹配算法可以解决,希望大家实现一下代码,函数参数就是n*n矩阵,输出是那个最小的和
...全文
2526 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
雪域迷影 2010-07-30
  • 打赏
  • 举报
回复
不错,学习了!
showjim 2010-06-07
  • 打赏
  • 举报
回复
showjim 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 fire_woods 的回复:]
指派问题的匈牙利算法如果运气不好会迭代很多次, 而且有可能进入死循环.
一般都是做若干步后终止.
[/Quote]
配合KM的话,不会死循环,最坏n^4,可以优化到n^3
littlemonster 2010-06-06
  • 打赏
  • 举报
回复
hungarian算法可以算的,sourceforge上有源码。
amu0421 2010-06-06
  • 打赏
  • 举报
回复
我怎么感觉枚举可以啊
总共n!种可能
莫非你N相当大
[Quote=引用 3 楼 woaigaoxinyu 的回复:]
谁要是解出来了,把40分全送给您
[/Quote]
lzc52151 2010-05-31
  • 打赏
  • 举报
回复
MARK
colan0320 2010-05-30
  • 打赏
  • 举报
回复
望尘莫及!
pmars 2010-05-27
  • 打赏
  • 举报
回复
顶,明天在过来……
绿色夹克衫 2010-05-27
  • 打赏
  • 举报
回复
配合KM算法的话,就不会了,n^3之内可以求解的。

[Quote=引用 31 楼 fire_woods 的回复:]
指派问题的匈牙利算法如果运气不好会迭代很多次, 而且有可能进入死循环.
一般都是做若干步后终止.
[/Quote]
jakiejiajia 2010-05-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 superdullwolf 的回复:]

<SCRIPT LANGUAGE="JavaScript">

var InputArr=[[2,0,0,1],[5,0,3,1],[4,8,0,2],[1,9,7,3]];
var n=InputArr[0].length;
var min=1<<30;

//不同行不同列选n个数 使其和最小
function gogogo(x,sum,info){
if(x……
[/Quote]

我想问一下这个是如何保证不同列不同行,,望指教啊
超级大笨狼 2010-05-26
  • 打赏
  • 举报
回复
更正,求组合
<SCRIPT >
var n=5;
var m=3;
function Combine(x,y,result,info)
{
if(x==m )
{
document.write(result + "<br/>") ;
}
else
{
for(var z =y;z < n; z++)
{
if(( info & (1<<z ) )==0)
{
Combine(x+1,z ,result+z +",",info + (1<<z ));
}
}
}
}
Combine(0,0,"",0);
</SCRIPT>
jakiejiajia 2010-05-25
  • 打赏
  • 举报
回复
此等贴怎么能少了我来顶
fire_woods 2010-05-24
  • 打赏
  • 举报
回复
指派问题的匈牙利算法如果运气不好会迭代很多次, 而且有可能进入死循环.
一般都是做若干步后终止.
strwindysky 2010-05-24
  • 打赏
  • 举报
回复
进来学习一下。
Sunday 2010-05-23
  • 打赏
  • 举报
回复
fairywell 2010-05-22
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 litaoye 的回复:]

http://wiki.mbalib.com/wiki/%E5%8C%88%E7%89%99%E5%88%A9%E8%A7%A3%E6%B3%95

看看能不能访问

这个方法经常被用作解一些匹配问题,其实还有不少其他的方法,不过这方面我了解也不深。

引用 9 楼 woaigaoxinyu 的回复:

真的没找到,仁兄帮帮忙忙吧,谢啦
引用 8 楼 litaoye 的回复:
……
[/Quote]
litaoye兄的方法应该是正解吧
fairywell 2010-05-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 superdullwolf 的回复:]

给你解释一下这段短小,但是有点技巧的代码
gogogo(x,sum,info)
第一个参数x代表要选的列
第二个参数sum代表求和的结果
第三个参数info这里涉及到一个二进制在组合数学的应用技巧:

我们观察2的n次方,1,2,4,8,16这一系列数字,就是1<<n运算,有个规律
他们任意选择几个数字相加的数字是完全不可能相同的

比如我选了1和4=5,代表我选了只可能是1……
[/Quote]
学到一招,mark,这个的思想就是binomial factor把,很象 binomial queue
fairywell 2010-05-22
  • 打赏
  • 举报
回复
mark
0x甲鱼 2010-05-16
  • 打赏
  • 举报
回复
大笨狼很牛逼
Sunday 2010-05-14
  • 打赏
  • 举报
回复
最大子矩阵和

int max_arr(int n,int*b)
{
int i,s=-10000000,sum=0;
for(i=0;i<n;++i)
{
if(s>0)s+=b[i];
else s=b[i];
if(s>sum)sum=s;
}

return sum;
}
int max_matrix(int n)
{
int i,j,k,b[200];int sum,max=-1000000 ;
for(i=0;i<n;++i)
{
memset(b,0,sizeof(b));
for(j=i;j<n;++j)
{
for(k=0;k<n;++k)
b[k]+=a[j][k];
sum=max_arr(n,b);
if(sum>max)max=sum;
}
}

return max;
}
这个是求最大子矩阵的和,求最小的话稍微改一下就OK了,原理都是一样的……
加载更多回复(24)
线性表 某软件公司大约有30名员工,每名员工有姓名、工号、职务等属性,每年都有员工离职和入职。 把所有员工按照顺序存储结构建立一个线性表,建立离职和入职函数,当有员工离职或入职时,修改线性表,并且打印最新的员工名单。 约瑟夫(Josephus)环问题:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,直到所有人全部出列为止。 建立n个人的单循环链表存储结构,运结束后,输出依次出队的人的序号。 栈和队列 某商场有一个100个车位的停车场,当车位未满时,等待的车辆可以进入并计时;当车位已满时,必须有车辆离开,等待的车辆才能进入;当车辆离开时计算停留的的时间,并且按照每小时1元收费。 汽车的输入信息格式可以是(进入/离开,车牌号,进入/离开时间),要求可以随时显示停车场内的车辆信息以及收费历史记录。 某银营业厅共有6个营业窗口,设有排队系统广播叫号,该银的业务分为公积金、银卡、理财卡等三种。公积金业务指定1号窗口,银卡业务指定2、3、4号窗口,理财卡业务指定5、6号窗口。但如果5、6号窗口全忙,而2、3、4号窗口有空闲时,理财卡业务也可以在空闲的2、3、4号窗口之一办理。 客户领号、业务完成可以作为输入信息,要求可以随时显示6个营业窗口的状态。 5、4阶斐波那契序列如下:f0=f1=f2=0, f3=1,…,fi=fi-1+fi-2+fi-3+fi-4, 利用容量为k=4的循环队列,构造序列的前n+1项(f0, f1 , f2 ,… fn ),要求满足fn ≤200而fn+1 >200。 6、八皇后问题:设8皇后问题的解为 (x1, x2, x3, …,x8), 约束条件为:在8x8的棋盘上,其中任意两个xi 和xj不能位于棋盘的同、同列及同对角线。要求用一位数组进存储,输出所有可能的排列。 7、迷宫求解:用二维矩阵表示迷宫,自动生成或者直接输入迷宫的格局,确定迷宫是否能走通,如果能走通,输出走路线。 8、英国人格思里于1852年提出四色问题(four colour problem,亦称四色猜想),即在为一平面或一球面的地图着色时,假定每一个国家在地图上是一个连通域,并且有相邻边界线的两个国家必须用不同的颜色,问是否只要四种颜色就可完成着色。现在给定一张地图,要求对这张地图上的国家用不超过四种的颜色进染色。 要求建立地图的邻接矩阵存储结构,输入国家的个数和相邻情况,输出每个国家的颜色代码。 9、以下问题要求统一在一个大程序里解决。 从原四则表达式求得后缀式,后缀表达式求值,从原四则表达式求得中缀表达式,从原四则表达式求得前缀表达式,前缀表达式求值。 数组与广义表 鞍点问题: 若矩阵A中的某一元素A[i,j]是第i中的最小值,而又是第j列中的最大值,则称A[i,j]是矩阵A中的一个鞍点。写出一个可以确定鞍点位置的程序。 稀疏矩阵转置: 输入稀疏矩阵中每个元素的号、列号、值,建立稀疏矩阵的三元组存储结构,并将此矩阵转置,显示转置前后的三元组结构。 用头尾链表存储表示法建立广义表,输出广义表,求广义表的表头、广义表的表尾和广义表的深度。 树和二叉树 以下问题要求统一在一个大程序里解决。 按先序遍历的扩展序列建立二叉树的存储结构 二叉树先序、中序、后序遍历的递归算法 二叉树中序遍历的非递归算法 二叉树层次遍历的非递归算法 求二叉树的深度(后序遍历) 建立树的存储结构 求树的深度 图 输入任意的一个网,用普里姆(Prim)算法构造最小生成树。 要求建立图的存储结构(邻接表或邻接矩阵),输入任意的一个图,显示图的深度优先搜索遍历路径。 要求建立图的存储结构(邻接表或邻接矩阵),输入任意的一个图,显示图的广度优先搜索遍历路径。 查找 设计一个读入一串整数构成一颗二叉排序树的程序,从二叉排序树中删除一个结点,使该二叉树仍保持二叉排序树的特性。 24、设定哈希函数 H(key) = key MOD 11 ( 表长=11 ),输入一组关键字序列,根据线性探测再散列解决冲突的方法建立哈希表的存储结构,显示哈希表,任意输入关键字,判断是否在哈希表中。 排序 以下问题要求统一在一个大程序里解决。 25、折半插入排序 26、冒泡排序 27、快速排序 28、简单选择排序 29、归并排序 30、堆排序
XAUT OJ刷题答案 1004 选择结构习题:奇偶数判断 65%(4810/7381) 38% 2020-4-23 1007 循环结构习题:输入两个整数,输出它们的最大公约数 66%(4379/6621) 36% 2020-4-23 1008 顺序结构习题:求三个数的平均值 63%(4500/7162) 39% 2020-4-23 1009 顺序结构习题:求两点之间的距离 61%(4135/6812) 41% 2020-4-23 1010 顺序结构习题:摄氏温度转换为华氏温度和绝对温度 53%(3782/7194) 49% 2020-4-23 1011 选择结构习题:求三个数的最大值 52%(4280/8171) 50% 2020-4-23 1012 循环结构习题:公式求π值 61%(3955/6500) 42% 2020-4-23 1013 循环结构习题:输入10个整数 ,输出所有负数并求其和 62%(3952/6347) 40% 2020-4-23 1014 循环结构习题:输出同构数 50%(3855/7711) 52% 2020-4-23 1015 选择结构习题:百分值转换成其相应的等级 45%(3592/7997) 56% 2020-4-23 1017 循环结构习题:求一个分数序列的值。 65%(3404/5227) 36% 2020-4-23 1018 循环结构习题:求2+22+222+....+22222的值 49%(3611/7443) 54% 2020-4-23 1019 循环结构习题:大小写字母转换 52%(3316/6343) 49% 2020-4-23 1020 循环结构习题:任意输入n个数,输出最大和最小值及其对应的序列号 56%(3078/5455) 45% 2020-4-23 1021 选择结构习题:三个数排序 66%(3470/5220) 35% 2020-4-23 1022 选择结构习题:分段函数 33%(3464/10497) 68% 2020-4-22 1023 循环结构习题:打印“完数” 73%(3105/4241) 28% 2020-4-23 1030 函数习题(1):输出水仙花数 64%(3463/5435) 38% 2020-4-23 1031 ----------------趣味题:柱状图排序 10%(47/491) 92% 2020-4-23 1032 函数习题(2):输入年月日,输出是本年第几天 53%(2842/5315) 48% 2020-4-23 1033 数组习题(1):求矩阵中最大元素值,并与同对角线元素交换 42%(2674/6374) 59% 2020-4-23 1034 函数习题(3):函数实现求最大公约数和最小公倍数 78%(2933/3754) 23% 2020-4-23 1037 函数习题(5):递归方法完成Fibonacci数列前n项 70%(2766/3924) 31% 2020-4-23 1038 数组习题(2):将2个升序数组合并为一个升序数组 65%(2243/3425) 35% 2020-4-23 1039 函数习题(6):判断一个数是否是回文数 67%(2794/4195) 35% 2020-4-23 1040 函数习题(7):递归完成x的n次方的计算 72%(2283/3178) 30% 2020-4-23 1041 数组习题(3):完成十进制数转成为二进制数 71%(2795/3951) 30% 2020-4-23 1043 函数习题(8):递归方法求n阶勒让德多项式的值 63%(1671/2652) 38% 2020-4-23 1044 函数习题(9):分解一个整数的所有素数因子 71%(2321/3252) 29% 2020-4-23 1045 数组习题(4):输出Fibonacci数列的前n项 57%(2538/4476) 46% 2020-4-23 1046 数组习题(5):数组元素前移 74%(2556/3466) 28% 2020-4-23 1047 数组习题(6):有序数组中插入若干数,仍保持有序 70%(2141/3048) 30% 2020-4-23 1048 函数习题(10):递归方法求计算x-x2+x3-x4+…+(-1)n-1xn值 54%(1551/2850) 48% 2020-4-23 1049 数组习题(7):电文加密 64%(2345/3656) 35% 2020-4-23 1050 结构体习题(1):输入n名学生学号、姓名、三门课成绩,计算平均分,输出排榜 50%(1966/3931) 50% 2020-4-23 1051 ----------------趣味题:输入三个字符串,按由小到大的顺序输出 39%(84/214) 62% 2020-4-15 1052 共用体习题(1):统计单位n名职工计算机水平考试成绩 64%(1139/1790) 36% 2020-4-23 1053 枚举型习题(1):输入整数输出其对应的颜色 74%(1028/1383) 25% 2020-4-23 1054 指针习题(1):升序排序 77%(1424/1861) 24% 2020-4-21 1055 指针习题(2):编写字符串连接函数strcat() 71%(1245/1753) 29% 2020-4-22 1056 指针习题(3):编写测字符串长度函数strlen() 85%(1183/1393) 15% 2020-4-22 1058 指针习题(4):猴子选大王 42%(572/1348) 59% 2020-4-22 1060 C++题目:定义一个圆类,输入圆半径,输出元的面积和周长 33%(259/784) 68% 2020-4-23 1061 C++题目:用于存放图书的栈类 45%(38/84) 55% 2019-12-16 1062 C++题目:利用重载求最小值 39%(104/267) 62% 2019-12-16 1063 C++题目:友元类计算两点间距离 62%(169/272) 38% 2020-4-17 1064 C++题目:补全复数类 53%(10/19) 47% 2019-11-4 1065 顺序结构习题:交换变量值 74%(1476/1997) 27% 2020-4-23 1066 顺序结构习题:大小写字母转换 71%(1430/2009) 30% 2020-4-23 1067 C++题目:利用静态数据成员计算总成绩 51%(104/203) 49% 2020-4-17 1068 C++题目:矩阵类运算符重载-加法 39%(14/36) 63% 2019-12-16 1069 测试题一 80%(1056/1326) 21% 2020-4-21 1070 测试题二 67%(851/1261) 34% 2020-4-23 1071 C++题目:派生类求面积 34%(14/41) 66% 2019-12-16 1072 C++题目:利用模板练习顺序循环队列 57%(21/37) 43% 2019-12-16 1073 选择结构习题:输入0~6的数字,输出对应星期的英文。 57%(783/1371) 44% 2020-4-23 1075 选择结构习题:实现简单数值运算 34%(711/2109) 69% 2020-4-23 1076 选择结构习题:根据月份、旅客订票张数和票价按优惠率计算费用 29%(481/1656) 73% 2020-4-23 1077 选择结构习题:时间格式转换 28%(484/1741) 75% 2020-4-23 1078 循环结构习题:自然数n的各位数字之和 63%(637/1008) 39% 2020-4-23 1079 循环结构习题:求前n项的和 62%(583/937) 40% 2020-4-23 1080 循环结构习题:输出数字菱形 55%(439/797) 46% 2020-4-23 1081 循环结构习题:下三角乘法口诀表 29%(443/1529) 72% 2020-4-23 1082 循环结构习题:求所有含6的整数的和 58%(478/818) 44% 2020-4-23 1083 循环结构习题:求一个数除以9的商等于它各位数字的平方和 86%(497/575) 14% 2020-4-23 1084 循环结构习题:求最优方案 50%(419/844) 53% 2020-4-23 1085 函数习题:计算公式s=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+…+n)的值 78%(482/616) 23% 2020-4-23 1086 函数习题:用函数实现判断一个整数是否能被n整除 68%(469/690) 34% 2020-4-23 1087 1091 结构体习题:通过学生学号查询学生 结构体习题:通过职工信息输出高于平均工资的职工信息及高于平均工资的职工人数

33,009

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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