之前好像在看到這樣的題目:
1.有3個容器,各是20公升,13公升,7公升, 形狀不同也不透明。一開始20公升的容器裡面裝了20公升水,反正倒來倒去最後要讓20公升和13公升容器各裝了10公升水
2. 2個外形不同的瓶子,各裝800毫公升水,另外還有1個300毫公升的杯子
現在有4個人,不限制喝的次數,想辦法讓每個人都正好喝到400毫公升水
第一第二道題目,口頭說明解法就行了
第三個題,就是從第一第二題裡面隨便選擇乙個,使用程式設計來求解
於是乎..覺得有趣.便做了起來...花了乙個下午的時間..終於做出來了:
首先建了乙個水杯類: //以下程式只是基於可執行..至於**的可看性和效能,暫時還沒做優化
public class cut
}private int _currentvalue;//杯子當前值
public int currentvalue
set}
public cut(int maxvalue,int currentvalue)
}然後在控制台程式環境下:
class program
static bool getdirection(int currentvalues)//true表示可以繼續下一次[節點不存在],false則反之[表示節點存在]
int count = 0;
for (int i = 0; i < valuelist.count; i++)
}else}}
return true;
}static void changecut(ref cut c1, ref cut c2, ref cut c3)
radomcut(ref c1, ref c2, ref c3, out cuta, out cutb);//隨機取兩個杯交換}}
static void radomcut(ref cut c1, ref cut c2, ref cut c3, out cut c11, out cut c12)//隨機產生兩個杯
else if (result == 1)
else
int result2 = rd.next(3);
while (result2 == result)//用於產生不和上面重複的值
if (result2 == 0)
else if (result2 == 1)
else
}static bool changetwocut(ref cut c1, ref cut c2)
))else //走右邊))}
if (result)
else //失敗,還原值
return result;
}static void getchangedvalue(cut c1, cut c2, out int valuea, out int valueb, bool atob)//兩種情況,一種a的值給b,一種b的值給a
else if (c1.currentvalue == c1.maxvalue)
else
}else if (c2.currentvalue == 0)
else if (c2.currentvalue == c2.maxvalue)
else
}else //非邊界值時
else//b的值給a時}}
static void getresult() //新增正確步驟或顯示結果
;valuelist.add(newvalue);
console.writeline("結果已出如下:");
for (int i = 0; i < valuelist.count; i++)
console.readline();
}else
;valuelist.add(newvalue);
console.writeline(newvalue[0].tostring() + ":" + newvalue[1].tostring() + ":" + newvalue[2].tostring());}}
}
演算法題 水杯倒水的問題
本文將介紹以下內容 1.引言 上回 第八回 品味型別 值型別與引用型別 上 記憶體有理 的發布,受到大家的不少關注,我們從記憶體的角度了解了值型別和引用型別的所以然,留下的任務當然是如何應用型別的不同特點在系統設計 效能優化等方面發揮其作用。因此,本回是對上回有力的補充,同時應朋友的希望,我們盡力從...
3水杯倒水問題
問題 給出三個杯子的容量abc 其中剛開始時c杯是滿的,ab是空的。現在在保證不會有漏水的情況下進行如下操作 將乙個杯子x的水倒到另乙個杯子y中,如果x空了或者y滿了就停止 滿足其中乙個條件才停下 現問c中水量有多少種可能性 a,b,c為非負整數 解法1 數論,擴充套件歐幾里得 待補充解法2 模擬倒...
廣度優先搜尋 水杯倒水問題
三個水杯 時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入 第...