c++ - 为什么这个 C++ 程序会导致一些未知测试用例的错误输出,我无法调试?
问题描述
我的输入得到了正确的结果(我手动尝试了 30 多个输入并得到了正确的输出),但是在实践门户上提交后,一些测试用例导致输出错误,我无法调试!
供参考的问题:厨师很喜欢玩纸牌。今天,他在玩三张牌的游戏。每张卡片的顶面写有一个字母,底面写有另一个(可能相同)字母。厨师可以任意重新排列卡片和/或以任何他希望的方式翻转任何卡片(特别是,他可以保持卡片原样)。他想让卡片顶面上的字母从左到右读出来,拼出他最喜欢的朋友鲍勃的名字。确定 Chef 是否可以用这些卡片拼写“bob”。
我的方法:我认为在以下情况下可以实现正确的输出:
两个“b”和“o”在第一个字符串或第二个字符串中。
如果在第一个和第二个字符串中没有直接找到两个“b”和“o”,那么两个“b”和“o”必须存在于单独的卡片上,以便我们可以相应地重新排列或翻转。
#include <iostream> #include <cstring> int main() { int t; std::cin >> t; while (t--) { std::string s1, s2, s; std::cin >> s1 >> s2; /* In String1 indiviually */ int index1 = s1.find('b', 0); int index2 = s1.find('b', index1 + 1); int index3 = s1.find('o', 0); if (index1 != -1 && index2 != -1 && index3 != -1) { std::cout << "yes" << '\n'; continue; } /* In String2 indiviually */ int pos1 = s2.find('b', 0); int pos2 = s2.find('b', pos1 + 1); int pos3 = s2.find('o', 0); if (pos1 != -1 && pos2 != -1 && pos3 != -1) { std::cout << "yes" << '\n'; continue; } /* Now checking whole string1 and string2 or on the top of card as well as foot of card */ s = s1 + s2; int count = s.length(); int sum = 0; int key1 = s.find('b', 0); if (key1 != -1) { sum++; int xflag1 = key1 + 3; /* if found on top then change its footer to 'z' and vice- versa. this is because lets assume if I found 'b' on top of a card and also there exist 'b' or 'o' on its footer then its create wrong output for next std::string.find() */ int xflag2 = key1 - 3; if (xflag1 < count) { s[xflag1] = 'z'; } if (xflag2 >= 0) { s[xflag2] = 'z'; } } int key2 = s.find('b', key1 + 1); if (key2 != -1) { sum++; int xflag1 = key2 + 3; int xflag2 = key2 - 3; if (xflag1 < count) { s[xflag1] = 'z'; } if (xflag2 >= 0) { s[xflag2] = 'z'; } } int key3 = s.find('o', 0); if (key3 != -1) { sum++; int xflag1 = key3 + 3; int xflag2 = key3 - 3; if (xflag1 < count) { s[xflag1] = 'z'; } if (xflag2 >= 0) { s[xflag2] = 'z'; } } if (sum == 3) { std::cout << "yes" << '\n'; } else std::cout << "no" << '\n'; } return (0); }
解决方案
bbboxx
会失败,因为你首先过滤掉卡b
您可以尝试将卡片分类
- 卡
o
和b
- 卡只有
o
- 卡只有
b
- 两者都没有的卡(没用)
然后计算结果
推荐阅读
- c++ - 如何计算楔形与 3d 空间中射线之间的相交距离
- django - 在大表中使用预取和过滤器优化 Django
- regex - PCRE 查找所有没有文件扩展名的 url,包括 #、? 等
- javascript - 为什么我的 jQuery 应用程序只有在页面刷新后才能工作?
- bash - bash 脚本上的 ubuntu 20.04 7z 命令
- php - 访问类方法
- python - 使用 Tweepy AsyncStream 异步流式传输推文
- python - 当我运行这个简单的文件时,我得到了这个 .json 错误
- docker - LetsEncrypt 证书更新脚本无法通过 docker compose
- vba - 如何在 VBA 中释放由 Shell 创建的文件的文件锁定?