简单规律题。首先想到的是,若01串中1有n个,则可以通过操作,使串中1的个数变为n-1、n-2……1、0个;第2个想到的是,如果n为奇数,可以通过操作,使串中1的个数最多变为n+1,而若n为偶数,则无法增加1的个数;第3个想到的是,两个串如果1的个数相同,则一定可以相互转换(这个有点难想,我感觉是对的,而且写程序验证了)。想到这里,题目就非常简单了。
/* * Author : ben */ #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <iostream> #include <algorithm> #include <queue> #include <set> #include <map> #include <stack> #include <string> #include <vector> #include <deque> #include <list> #include <functional> #include <numeric> #include <cctype> using namespace std; const int MAXN = 1010; char str1[MAXN], str2[MAXN]; int main() { while(scanf("%s%s", str1, str2) == 2) { int len1 = strlen(str1); int len2 = strlen(str2); int num1 = count(str1, str1 + len1, '1'); int num2 = count(str2, str2 + len2, '1'); if(num1 % 2 == 1) { num1++; } if(num1 >= num2) { printf("YES "); } else { printf("NO "); } } return 0; }