c++中的错误答案
Wrong answer in c++
你会得到一个DNA序列和一些酶。假设一个DNA序列是这样的:ATGCTGCTATGCATGCAGTGACT,并且你得到了可以去除AT和GC序列的酶。因此,您需要首先从DNA中去除所有出现的AT,然后重组DNA并应用下一种酶来去除所有出现GC的情况。问题的结果是,你最终得到的绳子会改造那些没有被这些酶去除的碎片。
输入
输入的第一行由表示酶的数量的整数n组成。第一行有DNA序列。接下来的T行具有输入CCD_ 1。
输出
对于给定的输入DNA序列,输出包含最终重组DNA的单行,该重组DNA是通过从a.中重复去除所有B1、B2、B3…Bn而形成的
在DNA被完全消耗的情况下,打印0表示没有DNA残留。
Constraints
1 <= n <= 10
示例1:
输入:
2
ATACGCATGACGATGCATGCAGCAT
ATA
GC
输出:
CATGACGATATAAT
示例2:输入:
3
ATGCATGCATCGACTCAGCATCAGCATCGACTA
TG
GC
AT
输出:
ACACCGACTCACACGACTA
我的代码:
我试着用c++中的字符串来解决它,我得到了:
在抛出"std::out_of_range"的实例后调用terminatewhat():basic_string::擦除()
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <vector>
#include <set>
#include <stdlib.h>
#include <string.h>
#include <queue>
#include <stack>
#include <assert.h>
#include <limits.h>
using namespace std;
int main() {
string str, str1;
int n;
scanf("%d", &n);
cin >> str;
while (n--) {
cin >> str1;
int len = str1.length();int len1=str.length();
for (int i = 0; i < len1; i++) {
int found = str.find(str1);
str.erase(found, found + len);
}
}
cout << str;
return 0;
}
三个主要问题:
第一,string::erase
上的异常超出范围
修复了通过测试发现实际返回值的问题:
if (found!=std::string::npos)
第二,正确搜索。通过跟踪found
(它也是size_t
而不是int
)并从下一个位置进行搜索来修复:
found = str.find(str1,found);
第三,正确使用string::erase
通过使用子字符串的长度进行擦除,而不是length+position:进行修复
str.erase(found,len);
我还没有为您的代码添加任何输入验证。你真的应该考虑自己去做。
最终代码:
(视频)
#include <string>
#include <iostream>
int main()
{
std::string str;
std::string str1;
int n;
std::cin>>n;
std::cin>>str;
while(n--)
{
std::cin>>str1;
int len = str1.length();
size_t found = 0;
for(unsigned int i=0;i<str.length();i++)
{
found = str.find(str1,found);
if (found!=std::string::npos)
{
str.erase(found,len);
}
else
{
break;
}
}
}
std::cout<<(str.length()?str:"0");
return 0;
}
每个示例输入的idone输出(我在/*
和*/
标记之间添加了您的示例输出):
Success time: 0 memory: 3476 signal:0
CATGACGATATAAT
/*CATGACGATATAAT*/
Success time: 0 memory: 3476 signal:0
ACACCGACTCACACGACTA
/*ACACCGACTCACACGACTA*/
相关文章:
- 使用 bfs 解决连接组件问题时得到错误的答案
- 递归求和任务的错误答案
- 为什么我在代码厨师的 CMPRSS 问题中得到 WA(错误答案)?
- 请找出我的代码中的错误,它在提交得到错误答案的同时仍然适用于我的所有测试用例
- 任何人都可以弄清楚这段代码如何显示运行错误?它打印无限时间 -1 以及正确答案
- 函数从指针 c++ 中获取错误的值并返回错误的答案
- C ++分割错误,为什么使用"long long"我没有得到答案?
- 乘法宏给出错误的答案
- 谷歌启动B轮巴士路线问题错误的答案?
- 欧拉项目 #8 C++ 得到错误的答案
- 寻找最小楼梯成本的动态规划问题的错误答案
- 为什么可变大小的数组会导致Codechef出现错误答案
- 位集上的按位或给出错误的答案
- 在 c++ 中将模板与类一起使用时,类成员函数的答案错误?
- SPOJ PLD的答案错误
- UVA 3n+1(概率 100)答案错误,但所有测试用例均已通过
- 散列!!答案错误,想不通
- 指数的最后一位——答案错误
- 在计算cpp中数字的n次方根时,答案错误
- Euler项目27的答案错误