習題4-2 正方形(squares, acm/icpc world finals 1990, uva201)(注意最後一次輸出後面沒有空行)有n行n列(2≤n≤9)的小黑點,還有m條線段連線其中的一些黑點。統計這些線段連成
了多少個正方形(每種邊長分別統計)。
行從上到下編號為1~n,列從左到右編號為1~n。邊用h i j和v i j表示,分別代表邊
(i,j)-(i,j+1)和(i,j)-(i+1,j)。如圖4-5所示最左邊的線段用v 1 1表示。圖中包含兩個邊長為1的正
方形和乙個邊長為2的正方形。
sample input
4 16
h 1 1
h 1 3
h 2 1
h 2 2
h 2 3
h 3 2
h 4 2
h 4 3
v 1 1
v 2 1
v 2 2
v 2 3
v 3 2
v 4 1
v 4 2
v 4 3
2 3
h 1 1
h 2 1
v 2 1
sample output
problem #1
2 square (s) of size 1
1 square (s) of size 2
problem #2
no completed squares can be found.
思路:
先看輸入的資料:
h輸入的是行列的點往右連的一條邊
v輸入的是列行的點往下連的一條邊
1、我們先用兩個二維陣列記錄下輸入的點的座標,乙個h(水平),乙個v(垂直)。比如右邊的點就記為1。
2、寫個函式,傳進引數為查詢的方塊的邊長。
3、然後從第乙個點開始遍歷。判斷以這個點作為左上頂點的正方形,的四條邊是不是存在,即標誌四條邊的點的值是不是1。
4、關於大於1的邊長來說,我們可以在判斷時用個迴圈,每次迴圈判斷的是邊長中的一部分(乙個單位長度)的邊是不是存在。即可。
5、具體看**吧。
#include
#include
using
namespace
std;
int hor[10][10],ver[10][10];
int n;
int square(int sq_n)
if(iff)
sqnum++;//方塊的個數}}
return sqnum;
}int main()
int num;
int ifn=0;
for(int i=1;i<=n;i++)
//ac at 2018/3/4
(題外話:到校第一道題還算順利。祝福接下來的旅程吧。演算法真害人。) UVA 201,紫書此處有錯
這個題資料小,所以我們暴力可解,思路是這樣的 heng i j 一旦是 1 就意味著,在 i,j 這個點出發有個 向右的線。zhi 同理,向下的線。然後列舉所有邊的情況,一旦judge 函式在某個點,找到了某個 以 len 為邊的 完整的方形 len,x,y 就返回1 1 include2 usin...
第三十五題 UVA201 正方形 Squares
pdf 題目描述 乙個兒童棋盤遊戲,包含了由點組成的正方形矩陣,由線段連線了一些相鄰的點。遊戲的乙個環節是,要求玩家數出由這些線段所形成的特定大小的正方形有多少個。例如,按下圖所示,有 3 個正方形,其中大小為 1 的有 2 個,大小為 2 的有 1 個。正方形的 大小 是指構成它的一條邊的線段數。...
uva 1451 Average 數形結合
數形結合那篇 的例題,維護乙個下凸佇列,一開始為了省事,用了棧,但是原理上有問題,因為有可能正好起點為上凸點的情況,wa了好多次 author jxy lang c c university china,xidian university if you need to reprint,please ...