Codeforces-297A 思维训练

本文解析了一个来自Codeforces(简称CF)的编程题,该题旨在考验选手的逻辑思维能力而非复杂的算法知识。文章详细介绍了题目的背景、核心概念以及解决思路,并提供了一段C++代码实现,展示了如何通过判断字符串中“1”的数量来确定是否能从一个字符串转换到另一个字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击打开链接 CF上的题目有趣,且偏向思维能力的锻炼,而不是枯燥无味的高深算法。

看似简单的算法,背后却蕴含着思维的结晶。

这题题意先必须看懂!题意:含有01字串,含有1的个数的奇数叫奇数字串,反之亦然。不论奇偶字符都可以在前面划掉0,1.而奇串只能在后面添加1,偶串只能添加0。给出A,问t通过变换能否得到B.。

由于偶串,不管怎样变换,最多不会超出原来1的个数,而奇串最多不会超出原来1的个数加1.而任意字串的1的个数小于A最多1的个数,都可以通过变换得到!。

#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std ;

int main()
{
    int len1,len2,x,y;
    char s1[1001],s2[1001];
    while(scanf("%s %s",&s1,&s2)!=EOF){
		len1=strlen(s1);
		len2=strlen(s2);
		x=y=0;
		for(int i=0;i<len1;i++){
			if(s1[i]=='1') x++;
		}
		for(int i=0;i<len2;i++){
			if(s2[i]=='1') y++;
		}
		if(x&1) x++;
		printf(x>=y?"YES\n":"NO\n");
    }
 	return 0 ;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值