码迷,mamicode.com
首页 > 其他好文 > 详细

uva 201 Squares 暴力

时间:2015-02-01 10:45:51      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

暴力

把边的信息装到一个field数组里面

第一维存水平线 第二维存竖直线

多重循环

先从边长为1正方形开始检查

每次检查都重新扫一下它的外圈

 

注意竖直线的地方它先给列坐标再给行坐标

 

输出有些繁琐

注意输出空行还有星星

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <set>
#include <queue>
#include <stack>
#include <map>
#include <vector>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> P;

const int maxn = 1100;
int field[2][10][10];
int cnt[10];

int main()
{
    //freopen("in.txt", "r", stdin);
    //freopen("out.txt", "w", stdout);

    int n, m;
    int kase = 0;
    while(scanf("%d%d", &n, &m) == 2)
    {
        memset(field, 0, sizeof(field));
        memset(cnt, 0, sizeof(cnt));
        ++kase;

        if(kase > 1)
            printf("\n**********************************\n\n");

        char buf[10];
        int x, y;

        for(int i = 0; i < m; i++)
        {
            scanf("%s%d%d", buf, &x, &y);
            if(buf[0] == H)
                field[0][x][y] = 1;
            else if(buf[0] == V)
                field[1][y][x] = 1;
        }


        for(int s = 1; s < n; s++)
        {
            for(int i = 1; i <= n - s; i++)
            {
                for(int j = 1; j <= n - s; j++)
                {
                    bool judge = true;
                    for(int t = 0; t < s && judge; t++)
                        if(field[0][i][j+t] != 1)
                            judge = false;
                    for(int t = 0; t < s && judge; t++)
                        if(field[0][i+s][j+t] != 1)
                            judge = false;
                    for(int t = 0; t < s && judge; t++)
                        if(field[1][i+t][j] != 1)
                            judge = false;
                    for(int t = 0; t < s && judge; t++)
                        if(field[1][i+t][j+s] != 1)
                            judge = false;
                    if(judge)
                        cnt[s]++;
                }
            }
        }

        int flag = false;
        printf("Problem #%d\n\n", kase);
        for(int i = 1; i <= 9; i++)
        {
            if(cnt[i] > 0)
            {
                flag = true;
                printf("%d square (s) of size %d\n", cnt[i], i);
            }
        }
        if(!flag)
            printf("No completed squares can be found.\n");


    }

    return 0;
}

 

uva 201 Squares 暴力

标签:

原文地址:http://www.cnblogs.com/dishu/p/4265249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!