第四届 蓝桥杯 第八题 翻硬币 贪心 解题报告
2016-03-18 21:08
363 查看
题目标题:翻硬币
小明正在玩一个“翻硬币”的游戏。
桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。
比如,可能情形是:**oo***oooo
如果同时翻转左边的两个硬币,则变为:oooo***oooo
现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?
我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求:
程序输入:
两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度<1000
程序输出:
一个整数,表示最小操作步数
例如:
用户输入:
**********
o****o****
程序应该输出:
5
再例如:
用户输入:
*o**o***o***
*o***o**o***
程序应该输出:
1
资源约定:
峰值内存消耗 < 64M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
思路:先标记两个字串的不同,例如1和3,可以通过交换1-2,2-3使其相同,所以把距离算出来相加即可。
小明正在玩一个“翻硬币”的游戏。
桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。
比如,可能情形是:**oo***oooo
如果同时翻转左边的两个硬币,则变为:oooo***oooo
现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?
我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求:
程序输入:
两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度<1000
程序输出:
一个整数,表示最小操作步数
例如:
用户输入:
**********
o****o****
程序应该输出:
5
再例如:
用户输入:
*o**o***o***
*o***o**o***
程序应该输出:
1
资源约定:
峰值内存消耗 < 64M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
思路:先标记两个字串的不同,例如1和3,可以通过交换1-2,2-3使其相同,所以把距离算出来相加即可。
#include <stdio.h> #include <string.h> char a[2000],b[2000]; int f[2000]; int main() { scanf("%s%s",a,b); int len = strlen(a); for(int i = 0; i<len; i++) if(a[i] == b[i]) f[i] = 0; else f[i] = 1; int ans = 0,flag = -1; for(int i = 0; i<len; i++) { if(f[i]) { if(flag == -1) flag = i; else { ans+=i-flag; flag = -1; } } } printf("%d\n",ans); return 0; }
相关文章推荐
- 「要买车网」免费获取汽车电商要买车网购车优惠券 - 持续更新(2016-03-12)www.fortunelab.cn
- EditText设置不自动弹出键盘
- Apache Kafka编程入门指南:设置分区数和复制因子
- 27. Remove Element
- Combination Sum
- 3192: [JLOI2013]删除物品
- iOS第三方库AFNetworking、SDWebImage
- 细谈select函数(C语言)
- 算日期模板
- 《不要因为走得太远 而忘记为什么出发》
- 基础测试查漏补缺
- 【bzoj 3192】: [JLOI2013]删除物品 树状数组+想法题
- POJ 2773 Happy 2006#素数筛选+容斥原理+二分
- 使用squid实现普通的代理服务器
- oracle允许外网链接
- 107. Binary Tree Level Order Traversal II
- nyoj--301 递推求值(矩阵快速幂)
- Pairs Forming LCM 素数筛和素因子分解
- 0-1背包问题
- 最大子段和