C++ 为什么此代码返回分段错误?

C++ 为什么此代码返回分段错误?,c++,C++,我写这段代码是为了优化问题的时间,这是一个dp问题 给定的字符串S是:574674546476 对于索引1: 从5到字符串末尾的偶数是7,因此索引1的结果是7 对于索引2: 从7到字符串末尾的偶数是7,因此索引2的结果是7 对于索引3: 从4到字符串末尾的偶数是7,因此索引3的结果是7 对于索引3: 从6到字符串末尾的偶数是6,因此索引4的结果是6 这是我尝试过的代码,但它显示了代码中的分段错误 #包括 使用名称空间std; int main() { char-str[10005]; int

我写这段代码是为了优化问题的时间,这是一个dp问题

给定的字符串S是:
574674546476

对于索引1: 从5到字符串末尾的偶数是7,因此索引1的结果是7

对于索引2: 从7到字符串末尾的偶数是7,因此索引2的结果是7

对于索引3: 从4到字符串末尾的偶数是7,因此索引3的结果是7

对于索引3: 从6到字符串末尾的偶数是6,因此索引4的结果是6

这是我尝试过的代码,但它显示了代码中的分段错误

#包括
使用名称空间std;
int main()
{
char-str[10005];
int i;
cin>>str;
int n=strlen(str);
int arr[10005];
对于(i=0;i=1;i++){
如果(arr[i]%2==0){
制表符[i]=制表符[i+1]+1;
}
否则{
tab[i]=tab[i+1];
}
}
对于(i=1;i
应该是

      for(i=n-1;i>=1;i--){
这就解释了崩溃的原因,但是当人们提交竞争性代码时,我们也会看到两个常见错误

这不是标准的C++头文件< /p>

#include<bits/stdc++.h>

因为C++中的数组大小必须是编译时常数,但这里 N是一个变量。

#include <vector>
#包括

向量选项卡(n+1);

相反。

网站有预览,请使用它使您的问题可读,至少在属于同一个网站的不同部分之间添加换行符。
#include <iostream>
int tab[n+1];
#include <vector>
vector<int> tab(n+1);