Re: [討論]請教一個具有限制條件的問題已回收

看板MATLAB作者 (帥氣又拉風)時間14年前 (2011/09/02 16:53), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/5 (看更多)
多加一個if 正應該正確了 r = input('總運行時間(Hr) = '); c = input('檢查最小長度 = '); bkl = 0; bkr = 0; tab = zeros(2^r, r); for i = 1 : 2^r x = dec2bin(i-1, r); tab(i, :) = str2num( x(:) )'; if sum( tab(i, 1:c) ) == 0 || sum( tab(i, 1:c) ) == c for j = 1 : r-1 if tab(i,j) ~= tab(i,j+1) if j >= c for k = 1 : c - 1 if tab(i,j-k) - tab(i,j-k+1) bkl = 1; break; else bkl = 0; end end if bkl break; end end if r - j >= c for k = 1 : c - 1 if tab(i, j + k) - tab(i, j + k + 1) bkr = 1; break; else bkr = 0; end end if bkr break; end end end end fprintf(x); if bkl || bkr bkl = 0; bkr = 0; fprintf(' x'); end fprintf('\n'); end end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.237.166

09/02 16:57, , 1F
謝謝您 我想這就是正確解答了 :) 感激不盡(我想了好久)
09/02 16:57, 1F
你若需要算24小時 我用的方法會不能執行 我幫你改個寫法 r = input('總運行時間(Hr) = '); c = input('檢查最小長度 = '); bkl = 0; bkr = 0; for i = 1 : 2^r x = dec2bin(i-1, r); tab(1, 1:r) = str2num( x(:) )'; if sum( tab(1, 1:c) ) == 0 || sum( tab(1, 1:c) ) == c for j = 1 : r-1 if tab(1,j) ~= tab(1,j+1) if j >= c for k = 1 : c - 1 if tab(1,j-k) - tab(1,j-k+1) bkl = 1; break; else bkl = 0; end end if bkl break; end end if r - j >= c for k = 1 : c - 1 if tab(1, j + k) - tab(1, j + k + 1) bkr = 1; break; else bkr = 0; end end if bkr break; end end end end if bkl == 0 && bkr == 0 fprintf(x); fprintf('\n'); end bkl = 0; bkr = 0; end end ※ 編輯: poiuy777 來自: 122.116.237.166 (09/02 17:25)
文章代碼(AID): #1EO9cAjs (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1EO9cAjs (MATLAB)