zoukankan      html  css  js  c++  java
  • UVa 201 Squares 枚举

    题意:
    有n行n列的小黑点,还有m条边连接这些小黑点,统计这些线段连接成几个正方形。
    分析:
    枚举每个点,看看以这个点为右下角的正方形是否可以,然后枚举边长,控制正方形的大小,判断是否可以构成正方形使用map记录边,然后查询就可以。

    #include<iostream>
    #include<cstdio>
    #include<map>
    #include<cstring>
    using namespace std;
    typedef pair<int,int>pii;
    map<pii,int>mp,mpp;
    int ans[11];
    int main()
    {
        int n,m,x,y;
        char op[2];
        int cas=0;
        //freopen("f.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        while(~scanf("%d",&n)){
            mp.clear();mpp.clear();
            memset(ans,0,sizeof(ans));
            scanf("%d",&m);
            while(m--){
                scanf("%s%d%d",op,&x,&y);
                if(op[0]=='H'){
                    mp[pii(x,y)]=1;
                }
                else mpp[pii(x,y)]=1;
            }
           // cout<<mp.size()<<' '<<mpp.size()<<endl;
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    for(int s=1;s<min(i,j);s++){
                        if(mp.count(pii(i,j-s))&&mpp.count(pii(j,i-s))){
                            //cout<<i<<' '<<j<<endl;
                            bool flag=1;
                            for(int x=i-s,y=j-s;x<i&&y<j;x++,y++){
                                if(mp.count(pii(i-s,y))&&mpp.count(pii(j-s,x)))continue;
                                else{flag=0;break;}
                            }
                            if(flag)
                                ans[s]++;
                        }
                        else break;
                    }
                }
            }
            if(cas){
                printf("
    **********************************
    
    ");
            }
            printf("Problem #%d
    
    ",++cas);
            bool flag=1;
            for(int s=1;s<=n;s++){
                if(ans[s]){
                    printf("%d square (s) of size %d
    ",ans[s],s);
                    flag=0;
                }
            }
            if(flag)printf("No completed squares can be found.
    ");
        }
        return 0;
    }
  • 相关阅读:
    mysql的权限定义
    数据库的启动流程和关闭介绍/mysql初始化配置文件
    SQL 执行顺序
    AJAX 同步请求锁浏览器
    JSON
    Json.NET
    JSON.parse()和JSON.stringify()
    the XMLHttpRequest Object
    命名方式
    varchar 和 nvarchar 的区别和使用
  • 原文地址:https://www.cnblogs.com/01world/p/5651230.html
Copyright © 2011-2022 走看看