UVA201 正方形 Squares 题解
2022/2/2 23:42:41
本文主要是介绍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; }
这篇关于UVA201 正方形 Squares 题解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南