一個程式要分2天發文...
我也覺得自己太混了
因為要聖誕節而且也要為跨年準備,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;
}
=====================心得=====================
有時候看完題目,整個程式的流量圖就大概出現了
但只要你動手寫一次,才會發現很多細節的部份都忘記要考慮
需要用int嗎?其實可以改用unsigned short,減少記憶體容量...