正文

位图2007-08-13 17:18:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lingdlz/28463.html

分享到:

位图 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB Total submit users: 50, Accepted users: 43 Problem 10109 : No special judgement Problem description 现在我们给出一个n×m的单色位图,且该为图中至少含有一个白色的像素。我们用(i, j)来代表第i行第j列的像素,并且定义两点p1=(i1, j1)和p2=(i2, j2)之间的距离为: d(p1, p2)=|i1 - i2| + |j1 - j2|请写一个程序:读入该位图;对于每个像素,计算出离该像素最近的白色像素与它的距离。 Input 第一行包括两个用空格分开的整数n和m,1<=n<=182,1<=m<=182。以下的n行每行包括一个长度为m的用0和1组成的字符串,在第i+1行的第j个字符如果为”1”,那么表示像素(i, j)为白的,否则为黑的。 Output 输出一个n×m的数表,其中的第i行的第j个数字为f(i, j)表示像素(i, j)到最近的白色像素的距离。 Sample Input 3 4 0001 0011 0110 Sample Output 3 2 1 0 2 1 0 0 1 0 0 1#include <iostream> #include <list> using namespace std; #define MAX_BIT 200 int  gm[MAX_BIT][MAX_BIT]; char gs[MAX_BIT]; class node{ public:     int i,j;     node(int a=0, int b=0):i(a),j(b){}     void set(int a, int b){ i=a; j=b; } }; void get(int i,int j,int value){     node a[4];     int  it=0,jt;     if(gm[i-1][j]==-1 || gm[i-1][j]>value)         a[it++].set(i-1,j);     if(gm[i+1][j]==-1 || gm[i+1][j]>value)         a[it++].set(i+1,j);     if(gm[i][j-1]==-1 || gm[i][j-1]>value)         a[it++].set(i,j-1);     if(gm[i][j+1]==-1 || gm[i][j+1]>value)         a[it++].set(i,j+1);     for(jt=0; jt<it; jt++){         gm[a[jt].i][a[jt].j] = value;         get(a[jt].i,a[jt].j,value+1);     } } int main(){     int i,j,n,m;     list<node> t;     cin>>n>>m;     for(i=0; i<=m+1; i++)         gm[0][i]=gm[n+1][i]=0;     for(i=1; i<=n; i++){         cin>>&gs[1];         gm[i][0]=gm[i][m+1]=0;         for(j=1; j<=m; j++)             if(gs[j]=='1'){                 gm[i][j] = 0;                 t.push_back(node(i,j));             }else                 gm[i][j] =-1;     }     for(list<node>::iterator it=t.begin(); it!=t.end(); it++)         get((*it).i,(*it).j,1);     for(i=1; i<=n; i++){         for(j=1; j<m; j++)             cout<<gm[i][j]<<' ';         cout<<gm[i][j]<<endl;;     }     return 0; }

阅读(3131) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册