- 思路
这道题应该怎么做?
可以把输入的数字逐位拆分后存入数组,就像这样存进去:
int a[N],b[N]
tmp=n;
k=1;
while(--tmp){
a[k]=s%10
s/=10;
k++;
}
tmp=n;
k=1;
while(--tmp){
b[k]=s%10
s/=10;
k++;
}
当然也可以用字符串进行存储,把字符转数字即可:
for(int i=1;i<=n;i++) a[i]=s[i-1]-48;
for(int i=n+1;i<=2*n;i++) b[i-n]=s[i-1]-48;//48=='0',应该都明白这样转换
- 为什么需要排序(上面没有打出来)
因为要较小的数对应较小的,较大的对应较大的,有点类似于贪心的思想。
- 判断
有对应位置上的数相等的:直接输出 NO
。
如果有两个位置与其对应的数(不能是同一个位置)大小关系不相同, 输出 NO
。
否则就输出 YES
。
The End.