matlab 如何实现从每行中任取一个元素,使得总和最小?

c{1}=[1 9 27 3 8 91 29];
c{2}=[27 50 3 35 61 12];
c{3}=[21 13 11 12 8 91 7];
c{4}=[29 17 2 13 11 7];
c{5}=[80 14 15 1 19 2 12 29];
c{6}=[9 6 71 3 8 31 24];
c{7}=[18 22 3];
最新回答
北橙旧梦

2024-09-21 02:47:32

分析:矩阵中每行各取一个元素,使其和最小,那么如果每行都取的是该行的最小值的话,那么最后的和肯定也是最小的。
所以只需找到每行的最小值即可。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>> a=magic(10)
a =
92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59
>> [m,n]=min(a')%%min函数是按列搜索最小值,所以对a进行转置后搜索就是按行搜索
m =
1 7 4 3 2 17 5 6 10 11%%m是每行的最小值
n =
3 3 1 5 4 1 2 2 1 1%%n是最小值对应的列,最小值对应的行其实就是数组n的元素索引值。
即最小值对应的坐标为:(1,n(1)) (2,n(2)) (3,n(3)) (4,n(4)).......
暖妹

2024-09-21 03:01:27

取每行的最小值不就行了?
追问
换种做法,使得总和能被3整除
不知道如何随机取值