UVA201 正方形 Squares 题解
作者:互联网
输入输出格式
输入格式
输入包含了多个游戏棋盘。每个棋盘包含了 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 等标识,并输出棋盘上的各种大小的正方形数目,按正方形由小到大的顺序排列。如果不存在任何大小的正方形,则打印相应的提示消息。将各组测试数据以一行星号间隔,星号上下方各有一个空行。请参见示例的格式。
输入输出样例
输入 #1
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
输出 #1
Problem #1
2 square (s) of size 1
1 square (s) of size 2
**********************************
Problem #2
No completed squa
思路
分开存横边和竖边,先查size为1的正方形,从第一个顶点开始查,具体思路可以看代码
代码
#include <stdio.h>
#include <string.h>
#define maxn 15
// 分开储存
int r[maxn][maxn];
int c[maxn][maxn];
int main() {
int n;
int kase = 0;
while (scanf("%d", &n) != EOF) {
memset(r, 0, sizeof(r));
memset(c, 0, sizeof(c));
// 注意格式!!!
if (kase > 0) {
printf("\n");
printf("**********************************\n\n");
}
int len;
scanf("%d", &len);
for (int k = 0; k < len; k++) {
char ch;
int i, j;
getchar();
scanf("%c", &ch);
if (ch == 'H') {
scanf("%d%d", &i, &j);
// 有边则设置为1
r[i][j] = 1;
} else if (ch == 'V') {
scanf("%d%d", &i, &j);
c[i][j] = 1;
}
}
int flag = 1;
int all[n];
memset(all, 0, sizeof(all));
printf("Problem #%d\n\n", ++kase);
int num = 0;
for (int i = 1; i < n; i++) {
for (int j = 1; j <= n * (n - i); j++) {
flag = 1;
for (int k = 0; k < i; k++) {
// 关键代码,判断边是否符合条件.
if (r[(j - 1) / n + 1][(j - 1) % n + 1 + k] != 1 || r[(j - 1) / n + 1 + i][(j - 1) % n + 1 + k] != 1|| c[(j - 1) % n + 1][(j - 1) / n + 1 + k] != 1 ||c[(j - 1) % n + 1 + i][(j - 1) / n + 1 + k] != 1) {
flag = 0;
break;
}
}
if (flag == 1) {
all[i]++;
}
}
if (all[i] > 0) {
printf("%d square (s) of size %d\n", all[i], i);
num++;
}
}
if (num == 0) {
printf("No completed squares can be found.\n");
}
}
return 0;
}
标签:Squares,int,题解,scanf,maxn,printf,格式,Problem,UVA201 来源: https://blog.csdn.net/m0_63486615/article/details/122772982