CodeBlocks C++ 输出文件
CodeBlocks C++ Output Files
我正在为奥林匹克编程,我正在研究一些算法问题。遇到了一个非常愚蠢和奇怪的错误。由于某种原因,我无法使用输出文件。我尝试打开一个旧项目,一切正常,但每当我创建一个新项目时,它就会被破坏。我从来没有遇到过这个问题,我使用了很多 CodeBlocks,这是代码,但我不认为问题出在我的代码中:
#include<stdio.h>
using namespace std;
const int N = 18;
int sol = 0, a[N], s, n;
bool numere[N];
void bkt (int v[])
{
int i, nr, j;
for (i = 1; i <= n; i++)
{
if (numere[a[i]] == false)
{
nr = a[i];
numere[a[i]] = true;
v[0] = 1;
for (j = 0; j + nr <= s; j++)
if (v[j] != 0)
v[j] += 1;
for (j = 1; j <= s; j++)
sol += v[j];
bkt (v);
for (j = 0; j + nr <= s; j++)
if (v[j] != 0)
v[j] -= 1;
numere[a[i]] = false;
}
}
}
int main ()
{
FILE *in, *out;
in = fopen ("monezi.in", "r");
out = fopen ("monezi.out", "w");
fscanf (in, "%d%d", &n, &s);
int i;
for (i = 0; i < n; i++)
fscanf (in, "%d", &a[i]);
int v[18];
for (i = 0; i <= 18; i++)
v[i] = 0;
bkt (v);
fprintf (out, "dds");
return 0;
}
此代码中的问题是:您已声明 int v[18];
大小为 18 (0~17) 的数组,并且您的循环 for (i = 0; i <= 18; i++)
导致非法内存访问。应该是:
for (i = 0; i < 18; i++)
我正在为奥林匹克编程,我正在研究一些算法问题。遇到了一个非常愚蠢和奇怪的错误。由于某种原因,我无法使用输出文件。我尝试打开一个旧项目,一切正常,但每当我创建一个新项目时,它就会被破坏。我从来没有遇到过这个问题,我使用了很多 CodeBlocks,这是代码,但我不认为问题出在我的代码中:
#include<stdio.h>
using namespace std;
const int N = 18;
int sol = 0, a[N], s, n;
bool numere[N];
void bkt (int v[])
{
int i, nr, j;
for (i = 1; i <= n; i++)
{
if (numere[a[i]] == false)
{
nr = a[i];
numere[a[i]] = true;
v[0] = 1;
for (j = 0; j + nr <= s; j++)
if (v[j] != 0)
v[j] += 1;
for (j = 1; j <= s; j++)
sol += v[j];
bkt (v);
for (j = 0; j + nr <= s; j++)
if (v[j] != 0)
v[j] -= 1;
numere[a[i]] = false;
}
}
}
int main ()
{
FILE *in, *out;
in = fopen ("monezi.in", "r");
out = fopen ("monezi.out", "w");
fscanf (in, "%d%d", &n, &s);
int i;
for (i = 0; i < n; i++)
fscanf (in, "%d", &a[i]);
int v[18];
for (i = 0; i <= 18; i++)
v[i] = 0;
bkt (v);
fprintf (out, "dds");
return 0;
}
此代码中的问题是:您已声明 int v[18];
大小为 18 (0~17) 的数组,并且您的循环 for (i = 0; i <= 18; i++)
导致非法内存访问。应该是:
for (i = 0; i < 18; i++)