欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

【牛客网】安置路灯 C++

发布时间:2024/2/28 c/c++ 83 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【牛客网】安置路灯 C++ 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

正确解法

遍历路灯字符串,遇见“.”,就给计数器+1,然后往后挪三个位置。如果遇到“X”,就直接往后挪一个位置。

#include<iostream> #include<string> using namespace std;int main() {int t, n;string s;cin >> t;for (int i = 0; i < t; i++) {cin >> n >> s;int sum = 0;int j = 0;while (j < n) {if (s[j] == '.') {sum++;j += 3;}else {j++;}}cout << sum << endl;}system("pause"); }

错误解法

#include<iostream> using namespace std;int getBlackCount(char a, char b, char c) {int blackCount = 0;if (a == '.') {blackCount++;}if (b == '.') {blackCount++;}if (c == '.') {blackCount++;}return blackCount; }int main() {int t;// 测试用例数cin >> t;for (int i = 0; i < t; i++) {cout << "测试用例:" << i << endl;int n; cin >> n;cout << "总长度:" << n << endl;int totalBlack = 0;//需要照亮的区域总个数char a[1001] = { 0 };for (int j = 0; j < n; j++) {cin >> a[j];if (a[j] == '.') {totalBlack++;}}cout << "初始道路:" << a << endl;//计算路灯 贪心int total = 0;while (totalBlack > 0) {int maxBlackCount = 0;int index = -1;for (int k = 0; k < n - 2; k++) { // 找到照亮最多的位置int lightCount = getBlackCount(a[k], a[k + 1], a[k + 2]);if (lightCount > maxBlackCount) {maxBlackCount = lightCount;index = k;}}// 在此处照亮a[index] = 'X';a[index + 1] = 'X';a[index + 2] = 'X';// 总数减少totalBlack -= maxBlackCount;cout << "照亮后:" << a << endl;// 路灯加一total++;cout << "当前增加路灯数量:" << total << endl;}cout << "答案:" << total << "\n\n";cout << total << endl;}system("pause"); }

错误原因

输入:

1 6 .X....

正确输出:2

超强干货来袭 云风专访:近40年码龄,通宵达旦的技术人生

总结

以上是生活随笔为你收集整理的【牛客网】安置路灯 C++的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。