poj 3923 模拟
2024-08-30 21:10:10
/*
1、判断是否是一个完整边框
2、判断是否长度和宽度小于3
3、判断是否有内部覆盖的现象
*/
#include<stdio.h>
#define N 110
#define inf 0x3fffffff
struct node {
int u,v;
}f[N*N],ee;
char s[N][N];
int n,m;
void judge() {
int minx,i,j,k,e,len,maxx,miny,maxy;
for(e=0;e<26;e++) {
len=0;
for(j=1;j<=n;j++)
for(k=1;k<=m;k++)
if(s[j][k]=='A'+e) {
ee.u=j;
ee.v=k;
f[len++]=ee;
}
if(len==0)continue;
minx=inf;maxx=0;miny=inf;maxy=0;
for(i=0;i<len;i++) {
if(f[i].u>maxx)
maxx=f[i].u;
if(f[i].u<minx)
minx=f[i].u;
if(f[i].v>maxy)
maxy=f[i].v;
if(f[i].v<miny)
miny=f[i].v;
}
if(maxx-minx<2)continue;//长度或者宽度小于三
if(maxy-miny<2)continue;
if(len!=(maxx-minx+maxy-miny)*2)//是否是一个完整边框
continue;
int flag=1;
for(i=minx+1;i<maxx;i++)
for(j=miny+1;j<maxy;j++)
if(s[i][j]!='.')
flag=0;//是否有内部覆盖现象
if(flag)
printf("%c",'A'+e);
}
}
int main() {
int i;
while(scanf("%d%d",&n,&m),n||m) {
for(i=1;i<=n;i++)
scanf("%s",s[i]+1);
judge();
printf("\n");
}
return 0;
}
最新文章
- Hibernate映射文件创建和删除触发器,存储过程等数据库对象
- Android开发中 Eclipse常忘记又需要的快捷键
- 在Eclipse中自定义类似syso的快捷代码模板
- Windows-008-VirtualBox 安装 Win7 前沿配置详解
- SQL:每年每月最高的两个温度
- python字典的常用操作方法
- The 5th Zhejiang Provincial Collegiate Programming Contest------ProblemK:Kinds of Fuwas
- rcp命令
- JTable,TableModel,DefaultTableModel与AbstractTableModel的小结
- sql查询语句报错处理——ERROR: failed to find conversion function from unknown to text
- 计蒜客NOIP模拟赛(2) D1T2 表演艺术
- 学习windows编程 day3 之 设置当前的背景颜色
- 07装饰模式Decorator
- 你真的会使用Github吗?
- MetaMask/provider-engine-2-代码
- (网络流 模板 Edmonds-Karp)Drainage Ditches --POJ --1273
- Android Media (Audio) Framework 多媒体系统框架
- 操作dict时避免出现KeyError的几种方法
- python笔记11-多线程之Condition(条件变量)
- layui数据表格自定义每页条数limit