这个题目是放在贪心算法的题目中的,说实话自己真的想不出和贪心有什么关系,因为自己对贪心就是一知半解,没有把握它的内涵与本质。这题我的想法就是比较前一半的数是不是全都大于后一半的数,或者全小于。当然在比较之前,要先把前一半和后一半的数进行排序,然后再进行比较。写完之后,我深刻怀疑是不是想错了,还是我题意理解错了,英语渣渣嘛!可是当我提交之后,竟然过了。我就在想,这个就是贪心思想吗?最直观的想法就是贪心的体现吗?还是这比较的过程已经体现了贪心的思想?
#include <cstdio>
#include <cmath>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=205;
int first[N],second[N];
int main()
{
char s[N];
int n;
while(scanf("%d",&n)!=EOF)
{
scanf("%s",s);
for(int i=0;i<n;i++)
first[i]=s[i]-'0';
for(int i=n;i<n*2;i++)
second[i-n]=s[i]-'0';
sort(first,first+n);
sort(second,second+n);
bool isless=false,ismore=false;
for(int i=0;i<n;i++)
{
if(first[i]>=second[i])
{
isless=true;
break;
}
}
if(isless==false)
{
printf("YES\n");
continue;
}
for(int i=0;i<n;i++)
{
if(first[i]<=second[i])
{
ismore=true;
break;
}
}
if(ismore==false)
{
printf("YES\n");
continue;
}
printf("NO\n");
}
return 0;
}