请您留下宝贵的建议吧:)
广西百色高中欢迎您!

| 网站首页 | 学校概况 | 软件下载 | 图片中心 | 雁过留声 | 视频资源 | 校长信箱 | 内 部 网 |
| 同 学 录 | 网络办公 | 教学课件 | 优秀教案 | 试卷下载 | 教学素材 | 教学论文 | 电子图书 |

 
您现在的位置: 广西百色高中校园网 >> 学校概况 >> 学生频道 >> 信息技术 >> 精典程序 >> 文章正文 用户登录 新用户注册
   
   

字符移动          【字体:
字符移动
作者:仔仔    文章来源:本站原创    点击数:    更新时间:2006-9-26
字符移动
 

n个A与n个B(n≥4)排成一排, 开始时, 字符B全排在A的后面,然后将它移成A,B 相间的情形: AAAABBBB → ABABABAB. 要求如下:
 (1) 每次同时移动两相邻字符, 不得调换顺序.
 (2) 总步数应尽量少.

program lxw003;
  var i,n,step:integer;
  s:array [1..100] of char;
procedure display;
  var i:integer;
  begin
    write("No.",step:2,"    ");
    for i:=1 to 2*n+2 do write(s[i]);
    writeln
  end;
procedure move(i,k:integer);
  var j:integer;
  begin
    step:=step+1;
    for j:=0 to 1 do
      begin  s[k+j]:=s[i+j];  s[i+j]:=" "  end;
    display
  end;
begin{main}
  repeat    writeln("input n:");  readln(n)   until n>3;
  step:=0;
  for i:=1 to n do s[i]:="A";
  for i:=n+1 to 2*n do s[i]:="B";
  s[2*n+1]:=" ";   s[2*n+2]:=" ";
  display;
  if n>4 then
    for i:=n downto 5 do
      begin  move(i,2*i+1);   move(2*i-1,i)   end;
  move(4,9);  move(8,4);  move(2,8);
  move(7,2);  move(1,7)
end.

文章录入:qinjun    责任编辑:qinjun 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
          最新热点       最新推荐       相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

       
     
     
     
    广西百色高中欢迎您!   网站地图 | 联系站长 | 友情链接 | 用户排行 | 版权申明 | 管理登录
    版权所有 Copyright© 2005-2010 广西百色高中 (桂ICP备05013955号)
    学校地址:广西百色市城乡路93号 电话号码:0776-2824142 传真:0776-2847293 邮政编码:533000
    站    长:覃钧  QQ:75331465            改版时间:2007年8月20日