zoukankan      html  css  js  c++  java
  • uva201

    题目意思就是找正方形,思路是用两个矩阵存横向和纵向的线,遍历每个顶点,并且列举每个顶点存在的正方形。

    #include <iostream>
    #include<cstring>
    using namespace std;
    #define maxn 12
    int h[maxn][maxn], v[maxn][maxn], sq[maxn], m, n;
    
    void input();
    int squares();
    int check(int x, int y, int k);
    
    int main() {
        int kase = 0;
        while (cin >> n) {
            cin >> m;
            input();
            int res = squares();
            if(kase)cout<<"
    **********************************
    
    ";
            cout << "Problem #" << ++kase << endl<<endl;
            if (res) {
                for (int i = 1; i <= n; i++) {
                    if (sq[i]) {
                        cout << sq[i] << " square (s) of size " << i << endl;
                    }
                }
            } else {
                cout << "No completed squares can be found." << endl;
            }
        }
        return 0;
    }
    
    void input() {
        char cmd[5];
        int a, b;
        memset(h, 0, sizeof(h));
        memset(v, 0, sizeof(v));
        memset(sq, 0, sizeof(sq));
        for (int i = 0; i < m; i++) {
            cin >> cmd >> a >> b;
            if (cmd[0] == 'H')
                h[a][b + 1] = 1;
            else
                v[b + 1][a] = 1;
        }
    }
    
    int squares() {
        int flag = 0, i, j, k;
        for (i = 1; i <= n - 1; i++)
            for (j = 1; j <= n - 1; j++)
                for (k = 1; k <= n - 1; k++) {
                    if ((i + k <= n) && (j + k <= n)) {
                        if (check(i, j, k)) {
                            sq[k]++;
                            flag++;
                        }
                    }
                }
        return flag;
    }
    
    int check(int x, int y, int k) {
        int res = 1;
        for (int i = y + 1; i <= y + k; i++)
            if ((h[x][i] == 0) || (h[x + k][i] == 0))
                res = 0;
        for (int i = x + 1; i <= x + k; i++)
            if ((v[i][y] == 0) || (v[i][y + k] == 0))
                res = 0;
        return res;
    }
  • 相关阅读:
    机器学习-Matplotlib绘图(柱状图,曲线图,点图)
    人工智能-机器学习之numpy方法
    爬虫解码~以及我的一些小经验
    django-子项目
    Django-模板语法
    Django-cookie的保存以及删除操作
    django-路由
    响应式瀑布流
    原生js实现最简单的瀑布流布局
    原生js用div实现简单的轮播图
  • 原文地址:https://www.cnblogs.com/ArvinShaffer/p/7839733.html
Copyright © 2011-2022 走看看