題目描述
乙個兒童棋盤遊戲,包含了由點組成的正方形矩陣,由線段連線了一些相鄰的點。遊戲的乙個環節是,要求玩家數出由這些線段所形成的特定大小的正方形有多少個。例如,按下圖所示,有 3 個正方形,其中大小為 1 的有 2 個,大小為 2 的有 1 個。正方形的 「大小」 是指構成它的一條邊的線段數。
你的任務是編寫程式,自動對全部可能的正方形計數。
輸入輸出格式
輸入格式
輸入包含了多個遊戲棋盤。每個棋盤包含了 n^2 個點的正方形矩陣 (其中 2 ≤ n ≤ 9),以及一些起連線作用的橫向或縱向的線段。棋盤的的 n^2 個點和 m 條連線線段,格式如下:
第 1 行:n,表示矩陣中單行或單列的點的數目
第 2 行:m,表示連線線段的數目
接下來的 m 行,每行是以下兩種格式之一:
(1) h i j 形式,表示第 i 行的橫向線段,連線了第 j 列的點和它右邊的第 j + 1 列的點;
(2) v i j 形式,表示第 i 列的縱向線段,連線了第 j 行的點和它下方的第 j + 1 行的點。
樣例輸入資料的第 1 組,對應於上面的圖示棋盤。
輸出格式
對於每組測試資料,輸出 problem #1, problem #2 等標識,並輸出棋盤上的各種大小的正方形數目,按正方形由小到大的順序排列。如果不存在任何大小的正方形,則列印相應的提示訊息。將各組測試資料以一行星號間隔,星號上下方各有乙個空行。請參見示例的格式。
——translated by core
輸入輸出樣例
輸入 #1複製416
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 323
h 1 1
h 2 1
v 2 1
輸出 #1複製
problem #1
2 square (s) of size 1
1 square (s) of size 2
problem #2
no completed squares can be found.
#include
#include
#include
#define maxn 11
using
namespace std;
int c[maxn]
[maxn]
,r[maxn]
[maxn]
;// r- hang c - lie
int len[maxn]
;inline
intjudge
(int lens,
int x,
int y)
return1;
// 是正方形
}int
main
(int argc,
char
* ar**)
if(kase !=1)
printf
("\n**********************************\n\n");
printf
("problem #%d\n\n"
,kase)
;for
(int i=
1; i<=n; i++
)// 列舉 邊長
for(
int x=
1; x<=n-i+
1; x++
)for
(int y=
1; y<=n-i+
1; y++)if
(judge
(i,x,y)==1
)int flag =0;
for(
int i=
1; i<=n; i++)if
(len[i])if
(flag ==0)
printf
("no completed squares can be found.\n");
}return0;
}
r[x]
[y]代表(x,y)點有一條向右的線段
c陣列 同理 代表向下
uva 201 Squares(數正方形)
習題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表示...
LeetCode第三十五題 Python實現
title leetcode no.35 categories tags 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 ...
Leetcode第三十五題 搜尋插入位置
題目 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 2 輸出 1 示例 3 輸入 1,3,5,6 7 輸出 4 示例 4...