栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2898 Entertainment

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2898 Entertainment

# include <cstdio># include <cstring># include <cstdlib># define max(a,b) ((a)>(b)?(a):(b))# define min(a,b) ((a)<(b)?(a):(b))# define legal(r,c) ((r)>=start&&(r)<n&&(c)>=0&&(c)<m&&!inqueue[r][c])using namespace std;const int N=1024;char map[N][N];int n,m,k,start,q[N*N][2],s,e;bool inqueue[N][N];void bfs(int tr,int tc){     s=e=-1;     q[++e][0]=tr;     q[e][1]=tc; memset(inqueue,false,sizeof(inqueue));     while(s!=e)     {          s++;          tr=q[s][0];          tc=q[s][1];  inqueue[tr][tc]=true;          if(legal(tr-1,tc)&&map[tr-1][tc]==map[tr][tc]){  q[++e][0]=tr-1;  q[e][1]=tc;          }          if(legal(tr+1,tc)&&map[tr+1][tc]==map[tr][tc]){  q[++e][0]=tr+1;  q[e][1]=tc;          }          if(legal(tr,tc-1)&&map[tr][tc-1]==map[tr][tc]){  q[++e][0]=tr;  q[e][1]=tc-1;          }          if(legal(tr,tc+1)&&map[tr][tc+1]==map[tr][tc]){  q[++e][0]=tr;  q[e][1]=tc+1;          }          map[tr][tc]=' ';     }}void MoveLeft(){   int maxnum=-1;   for(int i=start;i<n;i++)   {     int total=0;     for(int j=m-1;j>=0;j--)       if(map[i][j]==' ')       {         for(int k=j+1;k<m;k++)map[i][k-1]=map[i][k],map[i][k]=' ';         total++;       }     maxnum=max(maxnum,m-total);   }   m=maxnum;}void MoveDown(){   int minnum=0xfffffff;   for(int j=0;j<m;j++)   {       int total=0;       for(int i=start;i<n;i++)          if(map[i][j]==' ')          { for(int k=i-1;k>=start;k--)    map[k+1][j]=map[k][j],map[k][j]=' '; total++;          }       minnum=min(minnum,start+total);   }   start=minnum;}void print(){for(int i=start;i<n;i++){for(int j=0;j<m;j++) putchar(map[i][j]);putchar('n');}//printf("n");}int main(){    //freopen("e.in","r",stdin);    //freopen("ans.txt","w",stdout);    int test=0;    while(gets(map[0]))    {        m=strlen(map[0]);        for(n=1;;n++)        { gets(map[n]); if(map[n][0]>='0'&&map[n][0]<='9') {    k=atoi(map[n]);    break; }        }        start=0;        for(int i=0;i<k;i++)        {int tr,tc;scanf("%d%d",&tr,&tc);tr--,tc--;bfs(tr+start,tc);MoveLeft();   MoveDown();        }        printf("Test case #%d:n",++test);print();if(k) getchar();    }}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369237.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号