CodeBlocks c++输出文件

CodeBlocks C++ Output Files

本文关键字:文件 输出 c++ CodeBlocks      更新时间:2023-10-16

我正在为奥运会编程,我正在研究一些算法问题。一只非常愚蠢和奇怪的虫子过来了。我不能处理输出文件是有原因的。我试着打开一个旧项目,一切都很好,但每当我创建一个新项目时,它就会崩溃。我从来没有遇到过这个问题,我工作了很多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;
}

这段代码中的问题是:您已经声明了大小为18(0~17)的int v[18];数组,并且您的循环for (i = 0; i <= 18; i++)正在导致非法内存访问。应该是:

for (i = 0; i < 18; i++)