TOJ 3006. Encoding

题目大意给定一个r*c的矩阵,和一个字符串。将字符串转化为对应的数字串之后按照二进制从外到内绕圈填如数组,多余部分用0填充。如图:

最后,输出矩阵。

模拟方法第一次写的时候写废了,因为自己模拟的方法是在太龌龊。之所以采用这种龌龊的方法是因为曾经这样AC过一个题,下面给出这次的AC代码,以后也要继续优化自己的代码风格。
        len=r*c/5;
        
        
int rr,cc,bot,top,ls,rs;//bot,top,ls,rs表示上下左右的边界值
        bot=r-1;
        top
=0;
        ls
=0;
        rs
=c-1;
        rr
=0;
        cc
=0;
        memset(num,
0,sizeof(num));
        
for(t=0;t<len;t++)
        {
            
for(tt=0;tt<5;tt++)
            {
                num[t]
+=((op[rr][cc]-'0')<<(5-tt-1));
                
if(rr==top && cc!=rs)
                    cc
++;
                
else if(cc==rs && rr!=bot)
                    rr
++;
                
else if(rr==bot && cc!=ls)
                    cc
--;
                
else if(cc==ls && rr!=top+1)
                    rr
--;
                
else if(cc==ls && rr==top+1)
                {
                    top
++;
                    bot
--;
                    rs
--;
                    ls
++;
                    cc
++;
                }
            }
        }

 

posted @ 2008-08-11 20:09  DosXP  阅读(387)  评论(0编辑  收藏  举报