标签:换行 ring 展开 今天 rgba break 调查局 rip com
今天又是快乐水题的一天,本菜鸡决定水一道贪心题,题目如下:
http://www.fjutacm.com/Problem.jsp?pid=1871
在公元4484年,人类展开了对外界星球的征途和探索,但也不可避免的展开了和外星人之间的战争。偶然的机遇之下,美国联邦调查局截获了一串来自外星球的信息。但不知道有什么特殊的意义。所以就委托你,人类世界仅存的Acmer来破解这串神秘的信息。 所截获这条信息是长度为N的字符串Str,要重新组合成一个长度同样为N的字符串Ttr。Ttr一开始是一个空串。 重新组合的规则如为:每次从Str的字符串的头部或者尾部去除一个字符,并且接到Ttr的尾部。重复操作,直到Str为空串,Ttr为长度为N的字符串。 破解这条信息的关键在于要构造字典序尽可能小的字符串。 字典序:是指从前到后比较两个字符串大小的方法。首先比较第一个字符。如果不同则第一个字符较小的字符串更小,如果相同继续比较第二个字符串,来比较整个字符串的大小。 加油吧,聪明的Acmer,拯救人类的重担就靠你们了
输入包含多组样例。 首先输入整数N(1<=N<=1000) 然后输入字符串Str(仅含有大写字母)
对于每一组测试案例,在每一行输出破解后的字符串Ttr。
6 ACDBCB 6 DDABDD 6 DDBADD
ABCBCD DDABDD DDABDD
#include<stdio.h> #include<string.h> int main(){ int n; // int c=0; char s[1005]; char a[1005]; while(~scanf("%d",&n)){ int c=0; int m=n;//避免n变化 for(int i=0;i<n;i++){ scanf(" %c",&s[i]);//输入 } getchar(); for(int i=0;i<n;i++){ if(s[c]<s[m-1]){ printf("%c",s[c]); c++;//让比较了的不在比较 } else if(s[c]>s[m-1]){ printf("%c",s[m-1]); m--;//同上 } else{ int e=1; while(1){//一直比,直到不相同 if(s[c+e]<s[m-1-e]){ printf("%c",s[c]); c++; break; } else if(s[c+e]>s[m-1-e]){ printf("%c",s[m-1]); m--; break; } else{ e++;} } } } printf("\n");//输出换行 } return 0; }
标签:换行 ring 展开 今天 rgba break 调查局 rip com
原文地址:https://www.cnblogs.com/TYoUer/p/14318944.html