[蓝桥杯]翻硬币

题目描述
小明正在玩一个“翻硬币”的游戏。
桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。
比如,可能情形是:oo*oooo
如果同时翻转左边的两个硬币,则变为:oooo***oooo
现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?
我们约定:把翻动相邻的两个硬币叫做一步操作

输入

两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度<1000

输出
一个整数,表示最小操作步数
样例输入

********** 
o****o****

样例输出
5

package pro;


import java.util.*;

public class Main {
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int cnt = 0;
		String str = in.next();
		String string = in.next();
		char ch1[] = str.toCharArray();
		char ch2[] = string.toCharArray();
//		Queue<Node> queue = new LinkedList<>();
//		queue.add(new Node(str,0));
//		Map<String,Integer> map = new HashMap<>();
//		map.put(str, 1);
//		while(!queue.isEmpty()) {
//			Node node = queue.poll();
//			
//			for(int i = 0; i < str.length()-1; i++) {
//				char arr[] = node.s.toCharArray();
//				if(arr[i]=='*') arr[i] = 'o';
//				else arr[i] = '*';
//				if(arr[i+1]=='*') arr[i+1] = 'o';
//				else arr[i+1] = '*';
//				
//				Node node2 = new Node(String.valueOf(arr),node.step+1);
//				
//				if(node2.s.compareTo(string)==0) {
//					flag = 1;
//					System.out.println(node2.step);
//					break;
//				}
//				
//				if(map.containsKey(node2.s)) continue;
//				queue.add(node2);
//				map.put(node2.s, 1);
//			}
//			if(flag == 1) break;
//		}
		for(int i = 0; i < str.length(); i++) {
			if(ch1[i] != ch2[i]) {
				if(ch1[i] == '*') ch1[i] = 'o';
				else ch1[i] = '*';
				if(ch1[i+1] == '*') ch1[i+1] = 'o';
				else ch1[i+1] = '*';
				cnt++;
			}
		}
		System.out.println(cnt);
	}
}
class Node{
	String s;
	int step;
	public Node(String s, int step) {
		super();
		this.s = s;
		this.step = step;
	}
	
	
}

贪心
广搜超时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值