首页 > Windows开发 > 详细

HDU 2487 Ugly Windows

时间:2014-02-03 11:01:19      阅读:536      评论:0      收藏:0      [点我收藏+]

递归求解,代码不太好看,是2013年7月写的

 

代码:

bubuko.com,布布扣
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<math.h>

using namespace std;

char s[102][102];
int flag[26];
int res[28];
int tag1[27];

int zong,heng;
int tag;
int n,m;


int zhao(int qix,int qiy,int zhx,int zhy)
{
    int fff=0;
    for(int i=qix;i<zhx;i++)
        {
            for(int j=qiy;j<zhy;j++)
            {
                if(s[i][j]==.)
                    continue;
                flag[s[i][j]-A]=1000;
                int ny;
                for(ny=j;ny<zhy;ny++)
                {
                    if(s[i][ny]!=s[i][j])
                         break;
                }
                heng=ny-1;
                int nx;
                for(nx=i;nx<zhx;nx++)
                {
                    if(s[nx][j]!=s[i][j])
                        break;
                }
                zong=nx-1;
                int cnt=0;
                tag=0;
                if(zong!=i&&heng!=j&&zong-i>=2&&heng-j>=2)
                {
                    for(ny=j;ny<=heng;ny++)
                    {
                        if(s[zong][ny]==s[i][j])
                            cnt++;
                        else 
                            break;
                    }
                        if(cnt==heng-j+1)
                        {
                            cnt=0;
                            for(nx=i;nx<=zong;nx++)
                            {
                                if(s[nx][heng]==s[i][j])
                                    cnt++;
                                else
                                    break;
                            }
                            if(cnt==zong-i+1)
                                    tag=1;
                            else
                                tag=0;
                        }
                        if(tag)
                        {
                            tag1[s[i][j]-A]++;
                            fff=1;
                            if(zhao(i+1,j+1,zong,heng)==1)
                            {
                                if(tag1[s[i][j]-A]!=2)
                                    tag1[s[i][j]-A]=0;
                            }
                            
                        }
                }                
                else
                    tag1[s[i][j]]=0;
            }
        }
    return fff;
}

int main()
{
    
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        memset(flag,0,sizeof(flag));
        memset(tag1,0,sizeof(tag1));
        int i;
        if(n==0&&m==0)
            break;
        for(i=0;i<n;i++)
            scanf("%s",s[i]);
        zhao(0,0,n,m);
        
        int cn=0;
        for(i=0;i<26;i++)
        {
            if(tag1[i])
                res[cn++]=i;
        }
            sort(res,res+cn);
            for(i=0;i<cn;i++)
                printf("%c",res[i]+A);
            printf("\n");
    }
    return 0;
}
View Code

HDU 2487 Ugly Windows

原文:http://www.cnblogs.com/whatbeg/p/3537223.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!