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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。