Re: [問題] 矩陣的建立
我發現兩個問題,不過我沒有實際去compile,不知道是否會發生我預測的問題
第一個是,請你把j++改成++j,先加後加有時候會影響甚大
第二個是,你在創造狀態矩陣的時候
可以這樣初始化 int[][] stat = new int[3][];
但是在迴圈中,妳是將j指派到每一個二維索引,必須對其初始化
也就是 stat[i][j] = new int {j};
但是這樣不符合new的用法,所以這個方法我早試過了...
我的程式是使用strin[][] Tower直接紀錄每個塔的字串值
譬如"--+--"或" -+- ",來表示n=3的第3與第2碟盤
然後在move裡面再寫一個editor副程式,用來搬移字串值
搬移完畢之號,editor副程式會重新reset原新的參照索引
在editor副程式內也有一個detect副程式用來確認每個塔的第幾層是空的
所以move傳給editor的多載是"來源塔"與"目的塔"
editor會呼叫detect來傳回
"來源塔的第幾層為最高碟盤層"與"目的塔的第幾層為最高空層"
然後editor收到這些參照索引進行string搬移與reset
於是完成河內塔的工作,我自己是覺得寫的很沒效率,所以才想去找是否有分析堆置的方法
※ 引述《Dragoon (好無聊...)》之銘言:
: 我的問題好像不是問得很好
: 我要的矩陣不用寫出來
: 只要建立在程式內就好
: 我寫了以下的矩陣
: {
: int n;
: Console.Write("請輸入陣列數:");
: disks = Int32.Parse(Console.ReadLine());
: int[][] stat;
: stat = new int[3][];
: for (int i = 0; i < 2; ++i)
: {
: if (i == 0)
: {
: for (int j = 0; j <= n; j++ )
: stat[i][j] = j ;
: }
: else
: {
: for (int j = 0; j <= n; j++ )
: stat[i][j] = 0;
: }
: }
: 想說做出來的矩陣應該就是我想要的
: 卻發現程式可以執行
: 但輸入數字後
: 卻出現了奇怪的錯誤
: 不知道問題在哪@@
: ※ 引述《huangtim (消失)》之銘言:
: : 首先呢,3 * n的矩陣
: : 他的第一行只能容納 0, 1, 2, ... n-1
: : 然後妳一定是賴副院長開的程設學生XD
: : 妳一定是想寫河內塔作業吧,Hmm..妳的方法我已經用過了
: : 到後面可能會有輸出到螢幕上的瓶頸,所以我後來換了三套標記哪裡有碟盤的方法
: : Anyway..作業要自己寫:P
: : 依照妳的需求如下~然後妳的是橫的,我的是直的,這不會有差別,寫橫的也是可以啦
: : 判斷輸入部分是否為整數請用try & catch去寫一個副程式檢查,我就不多加著墨了
: : {
: : Console.Write("Please enter a integer number : ");
: : int n = Int32.Parse(Console.ReadLine());
: : Console.WriteLine("Press any key to build the Array...");
: : Console.ReadLine();
: : int i, j;
: : string output = "";
: : int[][] array = new int[n][];
: : for (i = 0; i < n; ++i )
: : {
: : array[i] = new int[] { i, 0, 0 };
: : }
: : for(i = 0; i < n; ++i)
: : {
: : for (j = 0; j < 3; ++j)
: : {
: : if (j == 2)
: : output += array[i][j] + "\n";
: : else
: : output += array[i][j] + ",";
: : }
: : }
: : Console.WriteLine(output);
: : Console.ReadLine();
: : }
--
Http://www.wretch.cc/blog/huangtim 內無正妹,廢渣一枚
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.120.233
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章