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("\n**********************************\n\n");
        }
        printf("Problem #%d\n\n",++cas);
        bool flag=1;
        for(int s=1;s<=n;s++){
            if(ans[s]){
                printf("%d square (s) of size %d\n",ans[s],s);
                flag=0;
            }
        }
        if(flag)printf("No completed squares can be found.\n");
    }
    return 0;
}

转载于:https://www.cnblogs.com/01world/p/5651230.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `squares.append()`是Python语言中列表对象的一个方法,用于在列表末尾添加一个元素。例如,如果你有一个名为"squares"的列表,并且想在其末尾添加数字9,你可以使用以下代码: ``` squares.append(9) ``` 这将在列表末尾添加数字9。 ### 回答2: 在Python中,squares.append()是一个列表方法,用于向列表中添加元素。该方法接受一个参数,即要添加的元素,并将该元素添加到列表的末尾。 例如,假设我们有一个空列表squares。我们可以使用以下代码将一个元素添加到列表中: squares = [] squares.append(4) 现在,squares列表将包含一个元素,即数字4。我们可以进一步使用append()方法来添加更多的元素到列表中。例如: squares.append(9) squares.append(16) squares.append(25) 现在,squares列表将依次包含数字4、9、16和25。 总结而言,squares.append()是一个有用的列表方法,它允许我们在Python中向列表中添加元素。无论列表是否为空,我们都可以使用append()方法将元素添加到列表的末尾。 ### 回答3: `python squares.append`是Python语言中的一个方法,用于将一个元素追加到列表(list)中。在使用该方法时,需要先创建一个列表对象,并且可以在括号内指定要追加的元素。 例如,以下是一个使用`squares.append`的示例: ```python squares = [] # 创建一个空的列表对象 # 使用append方法将元素依次追加到列表中 squares.append(1) squares.append(4) squares.append(9) squares.append(16) print(squares) # 输出结果为:[1, 4, 9, 16] ``` 在上述示例中,我们首先创建了一个空的列表对象`squares`。然后,使用`squares.append`方法依次向列表中追加了四个元素,分别是1、4、9和16。最后,通过`print(squares)`将列表内容打印输出,结果为`[1, 4, 9, 16]`。 总而言之,`python squares.append`是用于将一个元素追加到列表中的Python方法,可以方便地扩充列表的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值