神奇的String格式化

本文通过一个具体实例介绍了C#格式化字符串方法的使用,展示了如何将当前日期时间格式化为特定的字符串格式,并输出到控制台。文章还提供了多个格式化字符串的链接供进一步学习。
第4题 H-小梦的黑白球 描述 小梦又梦见这个场景……似乎曾见过这个黑球和白球…… 小梦现在有个球排成一排,其中球有两种颜色,白色和黑色。每一次可以进行两种操作—— 操作一:选择连续相邻的两个白球,把它们一起变成黑色。 操作二:选择连续相邻的三个黑球,把它们一起变成白色。 现在,小梦想要把这些球变为一种神秘的神奇状态来获取力量。 我们定义当所有球均为白色时,处在神奇状态。 已知个球的初始状态,问把这个球变为神奇状态最少需要操作多少次。如果小梦无法把球变为神奇状态,请输出。 输入 本题有多组测试数据。 输入的第一行包含一个正整数 ,表示数据组数。 接下来包含 组数据,每组数据的格式如下: 第一行一个整数,表示球的数量。 第二行输出一串只包含W和B的字符串,表示~个球依次排列的初始状态。 其中W表示白球,B表示黑球。 输出 对于每组数据: 仅输出一行,包含一个整数,表示把这个球变为神奇状态最少需要操作多少次。如果小梦无法把球变为神奇状态,请输出。 提示 【样例解释】 对于第一个测试样例: 对于第二个测试样例: 【数据范围】 对于 的评测用例, 对于 的评测用例, 对于 的评测用例, 保证所有测试用例的之和不超过。 保证输入的字符串只包含W和B两种字符。 时空限制 500ms/512MB 题目样例 输入 #1 2 3 WWB 4 WBBB 输出 #1 2 1 #include <bits/stdc++.h> using namespace std; struct node { int js; string s; }; int main() { int T; cin >> T; while (T--) { int n; cin >> n; string ss; string s; cin >> s; for (int i = 0; i < n; i++) { ss[i] = 'W'; } queue<node> q; q.push({0, s}); bool a = 0; while (q.size()) { node f = q.front(); q.pop(); if (f.s == ss) { cout << f.js << endl; a = 1; break; } string xz = f.s; for (int i = 0; i < xz.size(); i++) { string xs = xz; if (xz[i] == 'W' && xz[i - 1] == 'W') { xs[i] = 'B', xs[i - 1] = 'B'; q.push({f.js + 1, xs}); } else if (xz[i] == 'B' && xz[i - 1] == 'B' && xz[i - 2] == 'B') { xs[i] = 'W', xs[i - 1] = 'W', xs[i - 2] = 'W'; q.push({f.js + 1, xs}); } } } if (a == 0) { cout << -1 << endl; } } return 0; } 修改代码 保留代码命名和风格
08-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值