Re: [問題] 有限制的依順序選取問題已回收

看板MATLAB作者 (毛修)時間15年前 (2011/02/25 00:58), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
你好: 我寫了一小段程式供你參考,希望是你想要的結果,有問題可以再討論。 %sum_last為最後結果 clear,clc area_matrix = [3 3 4 1 3;2 4 3 3 1;3 2 2 1 1;4 2 3 1 2;3 2 2 1 3]; area_matrix = area_matrix'; order = [1 2 3 4 5]; %輸入選取次序 area = area_matrix(order); sum_last = 0; sum_pre = 0; i = 1; select = []; while (sum_last < 10) & (i <= numel(order)) sum_pre = sum_last; sum_last = sum_pre + area(i); while (sum_last > 10) & (i < numel(order)) i = i + 1; sum_last = sum_pre + area(i); end if (sum_last <= 10) & (i <= numel(order)) select(i) = order(i); i = i + 1; end if (sum_last > 10) & (i >= numel(order)) sum_last = sum_pre; i = i + 1; end end fprintf('加總面積為%d\n',sum_last) fprintf('選取位置為%d\n',select((select ~= 0))) ※ 引述《asa19860508 (asa)》之銘言: : 有一個5*5矩陣,分別對應面積如下: : 位置:[ 1 2 3 4 5 : 6 7 8 9 10 : 11 12 13 14 15 : 16 17 18 19 20 : 21 22 23 24 25] : 面積:[3 3 4 1 3 : 2 4 3 3 1 : 3 2 2 1 1 : 4 2 3 1 2 : 3 2 2 1 3] : 現在想隨機選取4個5個及6個地區進行限制為10單位的面積的選取 : 選取規則依照選取的先後順序排序 : 以5個地區為例 : 若選取到位置為[1 2 3 4 5] : 則對應到[3 3 4 1 3]的面積 : 但由於面積限制為10,則只會選取到[1 2 3]的位置 : 又若選取的順序為[1 2 4 3 5] : 則對應的面積為[3 3 1 4 3] : 依照選取規則,選到[1 2 4]時面積為7 : 可再繼續選取,但位置[3]對應的面積為4,若選取進去會超過10的限制 : 故往後選取,選擇面積為3的位置[5] : 所以此次選取位置為[1 2 4 5] : 請問此類問題編碼應如何設定? : 煩請各位大大幫忙解決~謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.7.97
文章代碼(AID): #1DPeucIy (MATLAB)
文章代碼(AID): #1DPeucIy (MATLAB)