使用 c++ 查找 lapindromes 时运行时错误"SIGCONT"
Runtime error "SIGCONT" while finding lapindromes using c++
我试图解决codechef上的lapindrome问题。
在我的本地 ide 上,程序按预期运行。
但是在代码厨师提交中,它给出了运行时错误"SIGCONT"。
#include<iostream>
#pragma GCC optimize("Ofast")
using namespace std;
int main() {
int t;
cin>>t;
do
{
string l;
cin>>l;
int c = 0;
for (int i = 0; i < (l.length()/2); i++)
{
if (l[i] == l[i+(l.length()/2)])
{
c++;
}
}
if (c == l.length()/2) {
printf("YESn");
}
else
{
printf("NOn");
}
t--;
} while (t!=0);
return 0;
}
首先,我想指出您的代码是错误的,因为对于测试用例转子,您的代码给出NO作为答案,它应该是YES。
为什么得到错误的答案?
有问题的是,如果字符串中有奇数个字符,我们忽略中间字符并检查 lapindrome。
因此,您需要修改/删除以下代码。
if (c == l.length()/2) {
printf("YESn");
}
else
{
printf("NOn");
}
而是这样做:
if (c == l.length()/2) {
//check for lapindrome
}
else
{
//remove middle character
//check for lapindrome
}
为什么"SIGCONT"错误?
当您超出 IDE 的打印限制时,会发生此错误。对于 Codechef IDE,它大约有 2^16 个字符。
您可以尝试在本地直接在文件中打印输出。(感谢black_truce(。
我的代码:
您可以查看以下解决方案以供参考。
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
string str,str1,str2;
cin>>str;
int len=str.length();
if(len%2==0){
str1=str.substr(0, len/2);
str2=str.substr(len/2, len);
}
else{
str1=str.substr(0, len/2);
str2=str.substr(len/2+1, len);
}
sort(str1.begin(), str1.end());
sort(str2.begin(), str2.end());
if(str1==str2) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
相关文章:
- 删除指向指针的指针是运行时错误吗
- c++中的指针和运行时错误
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 对单向链表进行排序时出现运行时错误
- 为什么此代码存在运行时错误?
- 你能解释一下什么运行时错误是如何解决它的吗?
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 为什么程序在 c++ 中迭代 emtpy 向量时会抛出运行时错误
- 运行时错误:引用绑定到类型为"int"的空指针
- 为什么当 vector 为空时会显示运行时错误?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 运行时错误:矢量下标超出范围:正在检查空集
- 分配给gslice_array会导致运行时错误
- cout 新创建的对象引发运行时错误
- C++在使用std::multimap时出现运行时错误的几率很小
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- 试图找出为什么我会收到运行时错误?
- 迭代二维矢量时发生运行时错误
- 使用 c++ 查找 lapindromes 时运行时错误"SIGCONT"