[討論]請教一個具有限制條件的問題已回收
小弟初接觸程式設計,之前解到一個問題,已經有初步的構想,
但是遇到瓶頸想請各位高手大哥大姐解惑
--
題目:
有一台機器 它開機運轉後的運轉時間不能低於三小時,但是可以一直運轉,
其時間無上限;一樣的,它停機的時間也不能低於三小時,但是停機後可以一直停機
時間也無上限,請列出在五個小時裡面此機器的所有排列可能性
(超過五小時則忽視),但是一開始要符合規定
我舉個解答的例子:
00000 是可以的,因為它一直停機
00011 是可以的,因為它開機之後一直運轉
11100 是可以的,因為它關機之後就一直維持關機
11101 不可以,因為它關機一小時之後就開機,不符合關機最短3小時的規定
00010 也是不可以,理由同上
附上我的m檔
--------
clear all
fprintf('---------------\n')
count=0;
r=input('Enter unit minima up/down time = ');
%設定開關機時間r 以及其他可以修改的變數s t u v 初期=r
s=r;
t=r;
u=r;
v=r;
for i=(2^5-1):-1:0
x=dec2bin(i,5);
for i=1:(s-1)
a=x(i);
b=x(i+1);
c=strcmp(a,b);
if c==1
count=count+1;
if count>=(t-1)
%如果計數器次數=開/關機時間的間隔 則印出計數器以及x值
fprintf('在 x = %s 時,內圈 counter =%d, %d 小時驗證通過 \n'
,x,count,r)
count=0;
end
elseif c==0
count=0;
end
end
end
--------
我是利用計數器cpunter檢查是否符合,但是限制條件不夠,我只能檢查前三個位元
後面的瑕疵就不知道要怎麼檢查了.....
(原始題目是要列出一天24小時此機器的可能性)
煩請高手跑跑看並解惑,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.206.41
※ 編輯: roger7667 來自: 140.118.206.41 (09/02 11:35)
※ 編輯: roger7667 來自: 140.118.206.41 (09/02 13:14)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 5 篇):