UVa 201 Square

  这道题,没什么,就查找正方形, 特别注意一下 的使用。

//UVa 201 
//Square
//#define LOCAL
#include <stdio.h> 
#include <string.h> //use memset 

int dot[11][11][11][11], N;

int getS(int size) 
{
    int cnt = 0, flag;
    for(int i = 1; i <= N-size; i++)
        for(int j = 1; j <= N-size; j++) { 
            flag = 0;
            int x = i, y = j;
            for(int k = 1; k <= size; k++) {
                if(!dot[x][y][x][y+1]) flag = 1;
                y++;    
            }
            x = i; y = j; 
            for(int k = 1; k <= size; k++) {
                if(!dot[x][y][x+1][y]) flag = 1;
                x++;    
            }
            x = i + size; y = j; 
            for(int k = 1; k <= size; k++) {
                if(!dot[x][y][x][y+1]) flag = 1; 
                y++;
            }
            x = i; y = j + size;
            for(int k = 1; k <= size; k++) {
                if(!dot[x][y][x+1][y]) flag = 1; 
                x++; 
            }        
            if(!flag) { 
//                printf("%d %d
", i, j);
                cnt++;
            }
        }
    return cnt;
}

int main() 
{    
    #ifdef LOCAL
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout); 
    #endif 
    int cnt = 0, n, ans, f;
    while(scanf("%d", &N) == 1) {
        memset(dot, 0, sizeof(dot));
        scanf("%d", &n);
        char s[5]; int x, y;
         for(int i = 0; i < n; i++) { 
            scanf("%s%d%d", s, &x, &y);
            if(s[0] == 'H') 
                dot[x][y][x][y+1] = 1;
            else     
                dot[y][x][y+1][x] = 1; 
        }
        if(cnt > 0) printf("
**********************************

");
        printf("Problem #%d

", ++cnt);
        f = 0;
        for(int i = 1; i <= N; i++) {
            ans = getS(i); 
            if(ans) { f = 1; printf("%d square (s) of size %d
", ans, i); }
        }
        if(!f) printf("No completed squares can be found.
");
    }
    return 0; 
} 
语言c++计算机程序设计爱好者 不定期更新题目题解 望互相分享心得体会 有意留言加q
原文地址:https://www.cnblogs.com/yifeiWa/p/10340638.html