c++ - 将 C++ 代码转换为 C 时程序崩溃

标签 c++ c algorithm

<分区>

我遇到了一个有趣的算法,但我很难用 C 语言实现它。

我确实在 C++ 中找到了它的代码,但我尝试将 C++ 代码转换为 C,但程序崩溃了。

C++代码如下:

int BalancedPartition ( int a[] , int n ){

    int sum = 0;
    for( int i = 0 ; i < n ; i++)
        sum += a[i];

    int *s = new int[sum+1];

    s[0] = 1;
    for(int i = 1 ; i < sum+1 ; i++)    s[i] = 0;

    int diff = INT_MAX , ans;

    for(int i = 0 ; i < n ; i++)
    {
        for(int j = sum ; j >= a[i] ; j--)
        {
            s[j] = s[j] | s[j-a[i]];
            if( s[j] == 1 )
            {
                if( diff > abs( sum/2 - j) )
                {
                    diff = abs( sum/2 - j );
                    ans = j;
                }

            }
        }
    }
    cout<< ans << " " << sum-ans<< endl; //two balanced partitions

    return min( ans , sum-ans );
}

我的(部分)C 代码如下:

double WeightDifference(int *a, int n)
{
    int sum = 0;



    for (int i = 0; i < n; i++){
        sum += *a[i];

    }

    const sizeOfS = sum + 1;
    int *s[32467];

我们将不胜感激。

最佳答案

sum += *a[i];

肯定是错误的,因为 a 是 a 指针并且您已经使用 [] 运算符访问了它的元素。删除不需要的取消引用(* 运算符)。

int *s[32467];

您的意思可能是创建一个整数数组而不是指向整数的指针数组。

int s[32467];

关于c++ - 将 C++ 代码转换为 C 时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26449363/

相关文章:

c++ - 从 cin 获取输入并将其存储在 char 变量中

c++ - 当涉及多个模板类型时,是否可以缩小类和函数之间的友元关系?

c++ - 将目录中的所有 cpp 文件编译成单独的可执行文件的 Makefile

algorithm - 归并排序算法中的递归关系

c++ - 跨平台双向IPC

c - 套接字连接()与绑定(bind)()

c - 在 C 中退出二维数组时出现问题

c++ - C 和 C++ 之间有什么区别禁止在后者中编译这个不拘一格的代码示例?

java - Java中用于存储图形的数组

image-processing - 使用图像过滤器提取二维曲线