2维数组问题
时间:2008-05-10 20:51:55
来源:论坛整理 作者: 编辑:chinaitzhe
先假设N=4 这个数组的值是 100 5 9 3
7 100 7 5
7 7 100 11
15 13 17 100
首先找到这个数组中值最小的行和列,上例应该是3,a[0][3]最小。用另一个数组b[n]记录下行和列,先是行 然后是列b[0] = 0,b[1]=3;然后到行为3的那一维找最小值,也就是第3维,15,13,17,100。但是数组b[n]已经记录的值的行不用考虑,此时b[n]中已经记录了0和3,所以只需要比较第1列和第二列的值,也就是13,17。选择最小的13。记录下这个最小值的列数,也就是2,放到b[2]中,也就是b[2]=2.最后到2行中找最小值,由于0,3,2列已经记录,所以这个时候只能选择第一列的,把这个列数保存到b[3]中,b[3]=1;
结果就是要输出数组中b[n]的值 这种情况是 0 3 2 1
假如N=10,情况也是一样的,是个递归的过程,先找最小的数,记录行数和列数,把行数和列数存到数组中,然后到列数中找最小的值,前面已经存过的值的列数排除,找到后再到该最小值的列数值的行去找最小值。
最后结果是得出一个序列,里面不会有重复的数。
哪位大哥帮帮忙,分析一下,想了半天不知道怎么写的!
网友回复:100 5 9 3
7 100 7 5
7 7 100 11
13 15 17 100
假设是这样的一个数组(红色部分不一样) 该怎么办呢?
如楼主所说 先找最小的数3 然后记录到b[0]=0 b[1]=3
再到第四行 找到最小值13 ,13在第一列 因为0已经记录不用考虑 还有1,2没有记录 那到底去第二行去找最小数
还是去第三行去找呢?
网友回复:这个时候还是在第3行找呀!继续找没有记录过的最小值。
网友回复:对不起 说错了。找到第四行后,由于第一列已经记录了,所以不用考虑。这个时候还是继续考虑第四行,不会变成其它行。继续找第4行里面没有记录过的列的最小值。这样说不知道你明白没。
网友回复:lz啊你举的例子就不对
“首先找到这个数组中值最小的行和列,上例应该是3,a[0][3]最小。用另一个数组b[n]记录下行和列,先是行 然后是列b[0] = 0,b[1]=3;然后到行为3的那一维找最小值,也就是第3维,15,13,17,100。但是数组b[n]已经记录的值的行不用考虑,此时b[n]中已经记录了0和3,所以只需要比较第1列和第二列的值,也就是13,17。选择最小的13。记录下这个最小值的列数,也就是2。。。”
列数是2吗,应该是1吧?
网友回复:没有撒子意义嘛,而且好繁琐哦
网友回复:
是的 我说错了 应该是13的列数1 就是因为很麻烦 所以求助大家呀!
网友回复:楼主还是自己动手做吧!应该不难的!
关键字:数组,问题,
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面