c++ - 为什么我的 Ptice 代码会遇到运行时错误?
问题描述
我是编程新手,我想尽可能多地学习。我正在研究 Kattis 上的问题 Ptice(链接到问题)。
现在我的编程之旅中的问题是我创建了我认为可行的代码,但是当我通过 Kattis 传递它时,它中途拒绝了我的解决方案等。下面的代码通过了 19 个测试用例中的 3 个。(在第 4 种情况下,它遇到运行时错误)
如果有人可以看看为什么我的逻辑不起作用/中断,那将是超级友好的。我很想知道我做错了什么,这样我就可以改进我的编程。:)
#include <iostream>
#include <string>
int main()
{
int numCharacters;
std::string inputSequence;
std::string
Adrian =
"ABCABCABCABC",
Bruno =
"BABCBABCBABC",
Goran =
"CCAABBCCAABB";
int pointsForAdrian = 0, pointsForBruno = 0, pointsForGoran = 0;
std::cin >> numCharacters;
std::cin >> inputSequence;
for (int i = 0; i < numCharacters; i++)
{
if (inputSequence.at(i) == Adrian.at(i))
{
pointsForAdrian++;
}
if (inputSequence.at(i) == Bruno.at(i))
{
pointsForBruno++;
}
if (inputSequence.at(i) == Goran.at(i))
{
pointsForGoran++;
}
}
if (pointsForAdrian >= pointsForBruno && pointsForAdrian >= pointsForGoran)
{
std::cout << pointsForAdrian << std::endl;
std::cout << "Adrian" << std::endl;
}
if (pointsForBruno >= pointsForAdrian && pointsForBruno >= pointsForGoran)
{
if (pointsForAdrian == pointsForBruno || pointsForBruno == pointsForGoran){
std::cout << "Bruno" << std::endl;
}
else {
std::cout << pointsForBruno << std::endl;
std::cout << "Bruno" << std::endl;
}
}
if(pointsForGoran >= pointsForAdrian && pointsForGoran >= pointsForBruno)
{
if (pointsForAdrian == pointsForGoran || pointsForBruno == pointsForGoran)
{
std::cout << "Goran" << std::endl;
}
else {
std::cout << pointsForGoran << std::endl;
std::cout << "Goran" << std::endl;
}
}
return 0;
}
解决方案
这三个人的答案序列各有 12 个字符长。
如果输入字符串是 12 个字符或更少,那很好。
但是,如果输入的字符串长度为 13 个或更多字符(最多可以为 100 个字符,如竞赛文本中所述),则该行
if (inputSequence.at(i) == Adrian.at(i))
将输入与答案序列末尾的字符进行比较,如下所示:
Index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Input: A A A A A A A A A A A A A A A
Adrian: A B C A B C A B C A B C
对于一切都可以,但是对于i = 0
您尝试比较过去 Adrians 字符串的字符。i = 11
i = 12
您必须使您的答案序列更长才能起作用,或者更好的是,将它们保持原样,但更改所有三个比较,如下所示:
if (inputSequence.at(i) == Adrian.at(i % 12))
所以它只是在序列的开头重新开始(因为12 % 12
是 0,13 % 12
是 1,...i % 12
计算i
除以 12 的余数)。
推荐阅读
- python - 奇怪的是 2 个对象相互指向,一个对象的每一个变化都在另一个对象上流动
- java - Java 客户端服务架构
- python - 如何模拟未初始化的全局变量?
- php - WooCommerce 未在购物车页面上显示不含税的实际价格
- android - 检查用户是否在 Android 中更改了生物识别/指纹
- javascript - 使用 JavaScript 在网站上执行任务
- amazon-web-services - 在远程服务器上使用 aws 凭据而不将它们存储在远程服务器上?
- javascript - javascript 从表中获取/存储数据
- boost-multi-array - 如何获取 boost multi_array 的视图并将其分配回相同的 boost multi_array?
- r - 回归中的观察次数