2010年下半年每周集训之组队常规训练5解题报告

2010年下半年每周集训之组队常规训练5―D题-by baiyuang

题意:
给你一张很大的纸,对着以后再对折,再对折……每次对折都是从右往左折。
然后沿着折纸的痕迹打开,每次都只打开“一半”,即把每个痕迹做成一个直角。
从纸的一段沿着和纸面平行的方向看过去,会得到一个美妙的曲线。

 

方法:递归

 

每次折叠的展开都可以看做是先把两个叠在一起的部分展成直角,然后分别展开两个部分,并且这两个部分是完全相同的,因此只需要求出一个部分展开的情况,也能知道另外一部分的情况,从而得到整张纸的情况。

 

 

算法伪代码:

len=0;
void solve(int n)
{
 if(n == 0)//最后一横
 {
  type[len]='_';
  next[len]='_';
  return ;
 }
 


 solve(n-1);//求折纸次数为n-1的痕迹
 


 for(i=len-1;i>=0;i--,len++)//把原来的图形顺时针旋转90度接到原来最后一横的后面
 {
  //以直角的形式连接起来
  type[i] != type[len];
  next[i] != next[len];
 }
}


为解题报告打分
暂时不评分

★★
★★★
★★★★
★★★★★
发表您的评论(若贴AC代码或发表禁止言论等违禁行为将被删除并扣除积分)

|返回 |   | 转到页头|
Copyright @ 2008-2024(浙ICP备2022001332号), TZOJ. All Rights Reserved.