(蓝桥杯)历届试题 翻硬币 (蓝桥杯练习系统)
来源:互联网 发布:百度云计算 编辑:程序博客网 时间:2024/06/18 12:31
历届试题 翻硬币
时间限制:1.0s 内存限制:256.0MB
问题描述
小明正在玩一个“翻硬币”的游戏。
桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。
比如,可能情形是:**oo***oooo
如果同时翻转左边的两个硬币,则变为:oooo***oooo
现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?
我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求:
输入格式
两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度<1000
输出格式
一个整数,表示最小操作步数。
样例输入1
**********
o****o****
o****o****
样例输出1
5
样例输入2
*o**o***o***
*o***o**o***
*o***o**o***
样例输出2
1
解题思路:本来是用暴力搜索的,只得了33分==。找到一个简单的方法,将现有字符串和目标字符串一个一个进行比较,如果不同,就将初始状态的该字符改变一下,此时也要将第二个顺便改一下,以此类推的继续下去~~~~
详见代码。
#include <iostream>#include <cstdio>#include <queue>#include <cstring>using namespace std;char ch1[1010],ch2[1010];/*struct node{ char ch[1010]; int step;} s,ss;queue<node>q,qq;void bfs(){ q=qq; int len=strlen(ch1); strcpy(s.ch,ch1); s.step=0; q.push(s); while (!q.empty()) { s=q.front(); q.pop(); if (strcmp(s.ch,ch2)==0) { cout<<s.step<<endl; break; } for (int i=0; i<len-1; i++) { ss=s; if (ss.ch[i]=='*') ss.ch[i]='o'; else ss.ch[i]='*'; if (ss.ch[i+1]=='*') ss.ch[i+1]='o'; else ss.ch[i+1]='*'; ss.step+=1; q.push(ss); } }}*/int main(){ while (~scanf("%s%s",ch1,ch2)) { int len=strlen(ch1); int step=0; for (int i=0; i<len-1; i++) { if (ch1[i]!=ch2[i]) { ch1[i]=ch2[i]; if (ch1[i+1]=='*') ch1[i+1]='o'; else ch1[i+1]='*'; step++; } } cout<<step<<endl; } return 0;}
0 0
- (蓝桥杯)历届试题 翻硬币 (蓝桥杯练习系统)
- 蓝桥杯---历届试题 翻硬币 (水题)
- 蓝桥杯 历届试题 翻硬币(贪心)
- 历届试题 翻硬币 (蓝桥杯)
- 蓝桥杯 历届试题 翻硬币(Java)
- 蓝桥杯-历届试题 翻硬币
- “蓝桥杯”历届试题:翻硬币
- 蓝桥杯历届试题-翻硬币
- 蓝桥杯 历届试题 翻硬币
- 蓝桥杯 历届试题 翻硬币
- 蓝桥杯 历届试题 翻硬币
- 蓝桥杯 历届试题 翻硬币
- 蓝桥杯 历届试题 翻硬币
- 蓝桥杯历届试题 翻硬币
- 蓝桥杯试题集 历届试题 翻硬币
- 蓝桥杯-历届试题之翻硬币
- 蓝桥杯历届试题 矩阵翻硬币
- 蓝桥杯 历届试题 矩阵翻硬币
- iOS7 initWithCustomView- leftBarButtonItem / rightBarButtonItem 偏移问题
- 非递归实现树的后序遍历
- CodeVS 2597团伙(并查集)
- Java多态中重载方法参数分别为父类和子类时的疑惑
- 计算机网络概论
- (蓝桥杯)历届试题 翻硬币 (蓝桥杯练习系统)
- Android View三种属性——VISIBLE,INVISIBLE,GONE
- poj 2387 Til the Cows Come Home
- 安卓状态栏+kitkat
- 比较cookies和Web Storage
- 搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇
- iOS:SVN出错 Description : The working copy is locked due to a previous error
- 二叉树输出先序遍历的第k个节点
- HUST 1010 The Minimum Length