iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 8
0

一個程式要分2天發文...
我也覺得自己太混了/images/emoticon/emoticon02.gif
因為要聖誕節而且也要為跨年準備,30天又不能中斷一次
只好撰寫一下比較輕鬆的程式

題目是從稀疏的記憶中回憶出來,而且有作少許更改
如果同學的作業是類似的題目,大家可以從這一方向思考
題目是這樣的:在5乘5的陣列中找出所有正方形

虛擬碼:
1)先行列掃描,所出所有"點"
2)為每個"點"作判斷,從點作右方下方右下方作延伸
3)給不同長度作判斷
4)如果延伸的點距離相等,即代表為正方形
5)繼續為餘下的行列作掃描
6)最後,輸出所有正方形的數量

int array[5][5]= {{0,1,1,1,0},
                  {0,1,1,0,0},
                  {0,1,0,1,0},
                  {0,0,0,0,0},
                  {0,0,0,0,0}}; 
int Long=0;
int find=0;
int main(){
   for(int x=0 ; x<5 ; x++){
   for(int y=0 ; y<5 ; y++){
      for(Long=1; Long<5 ; Long++){
	     if( array[y][x]==1  &  array[y+Long][x]==1  &  array[y][x+Long]==1 &  array[y+Long][x+Long]==1  ){
            find=find+1;
            }  }  }  }
   printf("%d\n",find);
return 0;
}

https://ithelp.ithome.com.tw/upload/images/20171222/201078184fhXV9IR8y.png

=====================心得=====================
有時候看完題目,整個程式的流量圖就大概出現了
但只要你動手寫一次,才會發現很多細節的部份都忘記要考慮
需要用int嗎?其實可以改用unsigned short,減少記憶體容量...


上一篇
陣列中找出正方形 [1]簡說&與&&、|與||
下一篇
[影像處理系列] 排序統計濾波器[1]
系列文
提神?看程式比喝咖啡更有效。30

1 則留言

0
微中子
iT邦新手 4 級 ‧ 2017-12-26 22:40:20

想看更難的

我要留言

立即登入留言