POJ 3617 Best Cow Line 贪心

来源:互联网 发布:淘宝试用平台哪个好 编辑:程序博客网 时间:2024/06/08 07:23

经典贪心问题。题意:给定n个字母,可以才从开头选取一个字母,也可以从结尾选取字母,使得组成的字符串字典序最小。

不能单纯比较首尾两个字母大小,不然碰到AC和AB这样的还需要判断下一个字母,如果下个字母也相等...so,我们把这个原先的串逆转过来,每次比较两个串的字典序,字典序小的先被选取,相等说明两个字符串完全一样,选哪个都行。需要注意的是输出格式问题- -

#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){int n;char s1[2050],s2[2050],t[2050];char *p,*q;while(scanf("%d",&n)!=EOF){int i,j;memset(s1,0,sizeof(s1));memset(s2,0,sizeof(s2));memset(t,0,sizeof(t));for(i=0;i<n;i++){scanf(" %c",&s1[i]);s2[n-i-1]=s1[i];}p=s1,q=s2;j=0;while(j<n){if(strcmp(p,q)<0){t[j++]=*p;p++;}else{t[j++]=*q;q++;}}for(i=0;t[i];i++){if(i%80==0&&i!=0)printf("\n");printf("%c",t[i]);}printf("\n");}return 0;}


0 0
原创粉丝点击