LA4265,LA4275

  LA4265,LA4275

  含义:八个方向分别用0,1,2,3,4,5,6,7表示。将这些数字连接成一串可以表示一个循环图。从方向2到方向4要转两圈,从方向6到方向4要转两圈。给出一个循环图,找出字典顺序最小的导向管柱。

  标题:https://icpcarchive.ecs.baylor.edu/index.php?选项=com _ online judge Itemid=8 page=show _ problem问题=3745

  http://acm.hdu.edu.cn/showproblem.php?pid=4162

  3354比赛的时候我很害怕。有的团队从971B写到5110B,再写到2454B。我们尝试了900B以上的总超时。我们必须使用特殊的数据结构吗?当我们挣扎的时候,比赛结束了.今天发现不需要什么特殊的数据结构,写起来也没那么长时间.

  先找一个字符串,把最小的ASCII字符记录到minn,然后加倍自己加长,这样就可以从任意一点扫描原长度字符串;然后,扫描每一个位置,只有符合minn开头的,才与现有字符串进行比较(先扫描到第一个符合条件的位置作为当前字符串的起点,再进行一般扫描)。

  #包括iostream

  #包含字符串

  使用命名空间std

  int main()

  int I;

  字符串a,ret

  而(cin a)

  int len=a . length();

  a=a[0];

  ret=“”;

  char minn=9 ,c;

  for(I=1;i=lenI) //查找结果字符串

  c=(char)((a[I]-a[I-1]8)% 8 0 );

  ret=c;

  if(c Minn)Minn=c;

  ret=ret ret

  int start//起点

  for(I=0;我lenI) //首先找到第一个可能的起点

  if(ret[i]==minn)

  start=I;

  打破;

  对于(我;我lenI) //然后扫描

  if(ret[i]==minn)

  for(int j=0;j lenj)

  if(ret[i j] ret[start j])

  start=I;

  打破;

  else if(ret[I j]ret[start j])break;

  while(I 1 len ret[I 1]==Minn)I;

  for(I=start;我开始贷款;我)

  cout ret[I];

  cout endl

  返回0;

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: