討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 全方位AWS解決方案完整培訓
[ 回上頁 ] [ 討論區發言規則 ]
陣列中被1或2所圍起來個0有幾個?
更改我的閱讀文章字型大小
作者 : godanokuo(KUO)
[ 貼文 21 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/17 下午 07:05:55
陣列中被1或2所圍起來個0有幾個?

對於陣列、座標尋找等等,都是我所不擅長的。

如題,以下陣列被1或2所圍起來的0有幾個?

其實這很像圍棋,但是並不是真正的圍棋遊戲。

假設今天陣列如下:

0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 1 1 1
0 0 0 1 0 0 1 2 2
1 1 1 1 1 1 2 0 0
0 1 2 2 2 2 0 0 0
0 1 2 2 0 0 0 0 0
0 0 1 2 2 0 0 0 0
0 0 1 2 2 2 2 0 0
0 0 0 1 2 2 2 0 0

輸出:

被1圍住的有27個
被2圍住的有18個

其實以前對這種題目並沒有太多的想法,
現在開始認真寫程式了,想要了解這種類型的題目,
需要展握哪些解題技巧?

P.S. 似乎這種題目使用FOR迴圈會非常的長~~

作者 : beldandy(貝爾丹迪)
[ 貼文 10 | 人氣 0 | 評價 40 | 評價/貼文 4 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/17 下午 07:36:38
你要判斷是真的有圍住嗎??
還是題目一定會圍住 不需要判斷??
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4468 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/17 下午 10:46:30
would you tell the game rule ?
作者 : godanokuo(KUO)
[ 貼文 21 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/18 上午 06:22:59
正常來說,應該也要有判斷是否沒有圍起來。

以下陣列範例:

0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 1 1 1
0 0 0 1 0 0 1 2 2
1 1 1 1 1 1 2 0 0
0 1 2 0 2 2 0 0 0
0 1 2 2 2 0 0 0 0
0 0 1 2 2 0 0 0 0
0 0 1 2 2 2 2 0 0
0 0 0 1 2 2 2 0 0

陣列[4][3]的位置不屬於任何的1或2,因此不納入記分。
作者 : godanokuo(KUO)
[ 貼文 21 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/18 上午 06:25:18
This is not a game.

Just find the 1 or 2 range.
作者 : jason680(Jsn) 貼文超過200則
[ 貼文 209 | 人氣 1 | 評價 810 | 評價/貼文 3.88 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/19 下午 03:38:15
你要定義: 什麼叫做"圍住"...
(什麼情形是"有圍住",什麼情形是"沒有圍住"...)
作者 : godanokuo(KUO)
[ 貼文 21 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/19 下午 04:17:22
To jason680(Jsn):

0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 1 1 1
0 0 0 1 0 0 1 2 2
1 1 1 1 1 1 2 0 0
0 1 2 0 2 2 0 0 0
0 1 2 2 2 0 0 0 0
0 0 1 2 2 0 0 0 0
0 0 1 2 2 2 2 0 0
0 0 0 1 2 2 2 0 0

上面陣列中,被1圍住的有27個,被2圍住的有17個。

假設我們將被1圍住的0變成"3"來看。

3 3 1 3 3 3 3 3 3
3 3 3 1 3 3 1 1 1
3 3 3 1 3 3 1 2 2
1 1 1 1 1 1 2 0 0
3 1 2 0 2 2 0 0 0
3 1 2 2 2 0 0 0 0
3 3 1 2 2 0 0 0 0
3 3 1 2 2 2 2 0 0
3 3 3 1 2 2 2 0 0

一共有27個3,以此類推2有17個0。
作者 : jason680(Jsn) 貼文超過200則
[ 貼文 209 | 人氣 1 | 評價 810 | 評價/貼文 3.88 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/19 下午 06:31:42
#!/usr/bin/perl

你要定義什麼叫"圍住"...

要不然, 你永遠有列舉不完的情形...
1. 簡單的狀況...
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 1 0 0
0 1 1 1 1 1 0 0 0
0 1 0 0 0 0 0 0 0
0 1 0 0 0 2 2 2 0
0 0 1 0 0 2 0 2 0
0 0 1 0 0 2 2 2 0
0 0 0 1 0 0 0 0 0

2. 1沒有連線的狀況....
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 1 0 0
0 1 1 1 1 0 0 0 0
0 1 0 0 0 0 0 0 0
0 1 0 0 0 2 2 2 2
0 0 1 0 0 2 0 0 0
0 0 1 0 0 2 2 2 2
0 0 0 1 2 0 0 0 0

3. 交叉狀況....
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 1 0 0
0 1 1 1 1 1 0 0 0
0 1 0 0 0 0 0 0 0
0 1 0 0 0 2 2 2 2
0 0 1 0 0 2 0 0 0
0 0 1 2 2 2 2 2 2
0 0 2 1 0 0 0 0 0

註:如果以上有些情形是不會發生(不可能)的,也要寫清楚. 謝謝!!!
作者 : godanokuo(KUO)
[ 貼文 21 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/19 下午 06:49:47
To jason680(Jsn) :

您說的情況全部都有可能會發生。

0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 1 0 0
0 1 1 1 1 1 0 0 0
0 1 0 0 0 0 0 0 0
0 1 0 0 0 2 2 2 2
0 0 1 0 0 2 0 0 0
0 0 1 2 2 2 2 2 2
0 0 2 1 0 0 0 0 0

舉上面你的例子來看,

這個答案為:

被1圍住的有0個
被2圍住的有3個

沒有完全被1或2其中一個所圍住,就不計分。


作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/19 下午 09:34:10
一個想法: 也許可以考慮類似 flood-fill 的 algorithm, 並記錄邊緣的值.
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4468 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/20 上午 12:56:14
http://acm.nudt.edu.cn/~twcourse/ConnectedComponentLabeling.html
作者 : godanokuo(KUO)
[ 貼文 21 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/20 下午 01:41:45
謝謝大師們的解說,

我現在才知道"演算法"內容會有教學,

很遺憾的是,我們學校某些老師實在糟糕,買C++演算法的書本,結果上課是用VB,

更糟糕的是,老師上的VB跟演算法沒甚麼關係...

原來我半學期錯失了這麼重要的課程,改天去修學弟的演算法。

在這邊謝謝各位的幫忙,小子已經順利解題出來了。

作者 : beldandy(貝爾丹迪)
[ 貼文 10 | 人氣 0 | 評價 40 | 評價/貼文 4 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/5/20 下午 05:17:13
可以把你的原則說出來嗎???
不用含程式碼

參考用 順便看你想的到底正不正確
或是有沒有更好的方法
 板主 : 風月
 > Java入門一般區 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Java入門一般區 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Java入門一般區
1 洋將 2410 
2 Aron 2130 
3 Aries 1510 
4 DEMO999 1310 
5 Ben 990 
6 ramb 620 
7 ozzy 570 
8 tand 460 
9 Huah 410 
10 vindy 400 
Java入門一般區
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.109375