題目如下:
乙個n行m列的矩陣被劃分成t個矩形區域,分別用數字1-t來標識,同乙個區域內的元素都用同乙個數字標識。如下圖所示,乙個6行8列的矩陣被分成8個矩形區域,分別用編號1-8標識。當兩個小區域之間公用一條邊時,稱這兩個區域相鄰,例如下圖中區域5的相鄰區域有6個,分別為1,2,3,6,7,8,但4並不是它的相鄰區域。請寫乙個程式找出區域k的所有相鄰區域。
輸入說明:
輸入第一行為四個整數n,m, t,k,整數之間用空格分隔。n表示矩陣行數(n<20),m表示矩陣列數(m<20),t表示矩陣被劃分為t個矩形區域(0輸出說明:
輸出為乙個整數,表示與k相鄰的區域個數。
輸入樣例
6 8 8 5
1 1 2 2 2 3 3 4
1 1 2 2 2 3 3 4
1 1 2 2 2 3 3 4
1 1 5 5 5 5 5 6
1 1 5 5 5 5 5 6
7 7 7 7 7 8 8 8
輸出樣例
6這個題目很好理解,就是給你一坨二維陣列,將其分為了t個矩形塊,並且替你標好了編號,指定乙個編號,讓你找到所有與目標矩形塊相鄰的矩形塊,並輸出矩形塊的數量。
關鍵點如下:
**如下:(因為xder統一學c,所以就貼c了)
#include
intmain()
}int flag1=-1
,flag2=-1
,flag3=-1
,flag4=-1
;//1是左上角,2是右上角,3是左下角,4是右下角
for(i=
0;i)//確定兩個頂點}if
(flag1!=-1
)break;}
for(i=
0;i)//確定右上角}}
if(flag2!=-1
)break;}
for(i=
0;i)//確定右下角}}
if(flag4!=-1
)break;}
int b[t+1]
;//定義乙個新的陣列b,作為標記陣列,如果對矩形塊四邊迴圈時出現了對應編號的**,則標記為1
for(i=
0;i1;i++
)//變數陣列不能在定義時賦值,所以單獨賦值
for(i=flag1;i<=flag2;i++
)//迴圈上邊
}for
(i=flag1;i<=flag2;i++
)//迴圈下邊
}for
(i=flag3;i<=flag4;i++
)//迴圈左邊
}for
(i=flag3;i<=flag4;i++
)//迴圈右邊
}for
(i=0
;i1;i++
)對b陣列進行加法,結果即為相鄰區域的數目
printf
("%d"
,y);
return0;
}
**中小細節有很多,還需要自行學習,我不再一一贅述。 相鄰問題和區域問題
相鄰問題使用 法解決 問題1 26個英文本母能組成多少4位數的字串,其中每位字母都不相同且b和d不相鄰?答案 num a 26,4 c 24,2 3 2 解析 先取總的方案數既 a 26,4 再將b d 看成乙個元素,相當於已經先取了b和d,再從26 2個元素中取2個出來,再對這3個元素進行全排列既...
CentOS7區域設定
區域設定的配置檔案在 etc locale.conf,通過localectl命令進行設定 systemd服務在啟動的時候讀取區域配置檔案,完成系統的設定。命令的幾個常用方法如下 1 檢視當前配置 root localhost localectl status system locale lang e...
7 GDI物件之區域Rgn
crgn createellipticrgn int x,int y,int height,int width 建立乙個橢圓形區域 crgn createellipticrgnindirect crect rect 建立乙個橢圓形區域 crgn createrectrgn int x,int y,i...