POJ 2818 密码 解题报告

 

POJ 2818 密码 解题报告

编号:2818

 

考查点:简单计算题

 

思路: 如果不对K优化的话会TLE,密钥数组没个位会有一个循环,先算出循环,然后用k去模除可以AC.。

 

提交情况: 前面一直TLE,后面出现了PE,因为没理解题意,最后在别人帮助下修正bug,成功AC.。

 

Source Code

 

// POJ Grids 2818
#include  < iostream >
using   namespace  std;

int  num[ 210 ];
int  mod[ 210 ];
int  index[ 210 ];
char  code[ 210 ];
char  decode[ 210 ];

int  main()
{
    
int  n;
    
while  (cin >> n && n)
    {
        memset(num,
0 , sizeof  num);
        
for  ( int  i = 1 ;i <= n;i ++ )
        {
            cin
>> num[i];
        }
        
int  k;
        
while  (cin >> k && k)
        {
            memset(code,
'   ' , sizeof  code);
            memset(decode,
'   ' , sizeof  decode);
            
for  ( int  i = 1 ;i <= n;i ++ )
            {
                index[i] 
=  i;
            }
            memset(mod,
0 , sizeof  mod);
            
for  ( int  i = 1 ;i <= n;i ++ )
            {
                
int  temp  =  index[i];
                
while  ( ++ mod[i])
                {
                    index[i] 
=  num[index[i]];        
                    
if  (temp  ==  index[i])
                        
break ;
                }
            }
            gets(code);
            code[strlen(code)] 
=   '   ' ;
            
for  ( int  j = 1 ;j <= n;j ++ )
            {
                
int  temp  =  k % mod[j];
                
for  ( int  i = 1 ;i <= temp;i ++ )
                {
                    index[j] 
=  num[index[j]];
                }
            }
            
for  ( int  i = 1 ;i <= n;i ++ )
            {
                decode[index[i]] 
=  code[i];
            }
            decode[n
+ 1 =   ' \0 ' ;
            cout
<< ( char * )(decode + 1 ) << endl;
        }
        cout
<< endl;
    }

    
return   0 ;
}

 

总结: TLE是个很可恶的事情,要多注意优化问题..。

 

                                                       By   Ns517

                                                      Time 09.03.04

转载于:https://www.cnblogs.com/ns517/archive/2009/03/04/1402951.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值