Return-value C++
Return-value C++
本文关键字:C++ Return-value 更新时间:2023-10-16
我是一个新程序员,当我遇到这个错误时,我正在解决codeforce的一个问题。
http://codeforces.com/contest/342/problem/A
我的算法工作正常,但我不知道为什么最后,我有一个错误消息和一个不同于 0 的返回值。如下图所示。
https://i.stack.imgur.com/sz9Jc.png
提前谢谢你!!
这是我的算法:
#include <iostream>
#include <vector>
using namespace std;
void print(int a, int b, int c, int n) {
for (int i=0;i<n;++i) cout<<a<<" "<<b<<" "<<c<<endl;
}
int main () {
int n; cin>>n;
vector<int> V(5);
bool cont=true;
for (int i=0;i<n;++i) {
V[i]=0;
}
for (int i=0;i<n;++i) {
int a; cin>>a;
if (a==5 || a==7) cont=false;
if (cont==true) {
if (a==1) V[0]++;
if (a==2) V[1]++;
if (a==3) V[2]++;
if (a==4) V[3]++;
if (a==6) V[4]++;
}
}
if (cont==false) {
cout<<-1<<endl;
}else {
if (V[0]==V[1] && V[1]==V[3] && V[2]==0 && V[4]==0) {
print(1,2,4,V[0]);
}else if (V[0]==V[1] && V[1]==V[4] && V[2]==0 && V[3]==0) {
print(1,2,6,V[0]);
}else if (V[0]==V[2] && V[2]==V[4] && V[1]==0 && V[3]==0) {
print(1,3,6,V[0]);
}else if (V[0]==V[1] && V[1]==(V[4]+V[3]) && V[2]==0) {
print(1,2,4,V[3]);
print(1,2,6,V[4]);
} else if (V[0]==V[4] && V[0]==(V[1]+V[2]) && V[3]==0) {
print(1,2,6,V[1]);
print(1,3,6,V[2]);
} else if (V[0]==(V[1]+V[2]) && V[0]==(V[3]+V[4]) && V[3]==V[1]) {
print(1,2,4,V[1]);
print(1,3,6,V[2]);
} else if (V[0]==(V[1]+V[2]) && V[0]==(V[4]+V[3]) && V[3]==(V[1]/2) && V[2]==(V[4]/2)){
print(1,2,4,V[3]);
print(1,2,6,V[1]-V[3]);
print(1,3,6,V[2]);
} else {
cout<<-1<<endl;
}
}
cout<<"fin"<<endl;
return 0;
}
for (int i=0;i<n;++i) {
V[i]=0;
}
您应该检查n
是否为 5 或更少。或者动态分配向量。如果出现n>5
,则会导致堆损坏,从而导致您获得退出代码。
如果您将 n
的值用于其他内容,并且您只想初始化您的向量,则可以迭代
for (int i=0;i<5;++i)
对于您显示的示例,您的向量很小:
vector<int> V(5);
在那行之后,你清理矢量
for (int i=0;i<n;++i) {
V[i]=0;
}
但是在您的示例中,您需要九个元素。你用它破坏了堆。将第一行更改为
vector<int> V(n);
它将返回预期的 0。
您看到的3221226356转换为十六进制的退出代码是0xC0000374。谷歌搜索表明它是堆损坏的异常代码。您在清理时某处遇到错误并引发异常,然后该异常代码已作为您的进程退出代码出现。
相关文章:
- 方法错误"not all control paths return a value"和方法不返回值
- 如何解决类成员函数中的"return a value"错误?
- QThread start() return value
- 警告:"Not all control paths return a value" c++
- What value should `std::stringstream::fail()` return after r
- Return value of std::hash ofr (x86/x64)
- 在这个程序中"getavg must return value"意味着什么?
- OpenCV HOGDescriptor return value
- 虚假"<function> is expected to return a value"警告?
- Opencv cv::waitKey() return value
- 我返回一个值,但编译器告诉我"function must return a value"
- const object&return value from a method, best practice
- 循环函数给出"return’ with a value, in function returning void"误差
- Return-value C++
- 计算距离:方法"must return a value" ?
- c++ rapidjson return value
- CAsyncSocket receive() return value
- boost program_options add_options return value
- 如何在java中执行"an exe with return value"?
- return value-C++:由私有方法返回的本地typedef