Re: [討論]請教一個具有限制條件的問題已回收
多加一個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)
討論串 (同標題文章)
完整討論串 (本文為第 4 之 5 篇):