Re: [問題] 請問一個關於while的用法
這是用遞回的方式去解魔術方陣
如果成功的話會秀出方陣,
※ 引述《polaristing (北極星的小鼎)》之銘言:
: 我再寫的問題是一個3*3的魔術方陣
: 排列1~9 使不管是橫的.直的或斜的總和均相同
: ex: 4 3 8
: 9 5 1
: 2 7 6
: 下面是原本完整的程式碼 還有一些我其他不太清楚的問題
: static void Main(string[] args)
: {
: int[,] X=new int [3,3];
: X[1,1]=5;
: while(!Assign(X,9));
: }
: static bool Assign(int[,] X,int count)
: {
: int i,j;
: if(count==5)
: {
: if(Check(X))
: {
: Show(X);
: Console.WriteLine();
: return true;
: }
: else
: return false;
: }
: 當count = 5之後 下面的程式還會執行嗎
: 還是說 return 完之後就跳出這個method嗎
: 如果執行下面的程式了 又是如何終止整個程式
不會,當 count = 5 只做CHECK 是否符合要求
以及符合就把方陣印出來,這邊的檢查結果會
一直傳到 main 做為是否結束的依據
: Random r=new Random();
: while(true)
: {
: i=r.Next(0,3);
: j=r.Next(0,3);
: if(X[i,j]==0) break;
: }
上面的 while 是找沒有被寫過的地方
: X[i,j]=count;
: X[2-i,2-j]=10-count;
填值到剛剛找到的地方
: bool ra=Assign(X,count-1);
用遞回的方式去填 count-1
: X[i,j]=0;
: X[2-i,2-j]=0;
: 這邊 什麼時候會執行阿
除了count = 5以外,每次呼叫Assign都
會做,假設某次尋找失敗,如果不清掉這
次的結果,下次尋找時會因為找不到地方
可以寫,而卡死在上面的while裡
: return ra;
: }
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.38.206
→
02/04 14:59, , 1F
02/04 14:59, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 7 之 8 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章