我需要對此代碼進行一些解釋。 這是其他人給出的示例代碼。`check/= 2;'的說明`
for (int i = 1; i <= 8; i++)
{
if(check % 2 == 0)
sum += i;
else
sum -= i;
check /= 2; <--- Need explanation for this line.
}
但在Pseudo code
,沒有check /= 2;
程序。
這是完整的Pseudo code
。
int binary = 0;
int sum;
while(binary<256)
sum = 0;
for(go through all 8 digits)
if the i-th digit is 0
sum += i
if the i-th digit is 1
sum -= i
end for
if sum == 0
output
binary++
end while
那麼,這行代碼的目的是什麼?
由於sum
,binary
和check
初始化爲0
。
我已經使用上面給出的僞代碼編寫了此代碼。 但似乎我的代碼將複製輸出和一個更多的問題,格式。
我想要的輸出是這樣的格式:
Enter a number : 3
-1 -2 +3 = 0
1 +2 -3 = 0
但我目前輸出:
Enter a number : 3
-1 -2 3 = 0
1 2 -3 = 0
這裏是我的代碼:
CODE IS REMOVED!
解決了!
我太專注於輸出部分的for
-loop,因此錯過了二進制的while
-loop,因爲僞代碼用於256個可能的解決方案,因此前端部分將有相同的輸出,例如:
1 - 2 - 3 + 4 = 0
1 - 2 - 3 + 4 + 5 - 6 - 7 + 8 = 0
因此,僞代碼可能會給出相同的輸出。所以,因爲該解決方案是在2^n
其中n = 1, 2, 3, ...
形式,所以更改
while(binary < 256) ---> while (binary < Math.pow(2, input))
應該解決這個問題。
解決了答案的格式和副本。
誰是「他人」?代碼應該做什麼? – 2012-04-12 07:42:18
我在'yahoo.answer.com'中被問到了,其中一個答覆給了我這個示例代碼,那個「其他人」。 該代碼是爲狀態空間查找所有可能的解決方案。 – Chin 2012-04-12 07:59:20