使用C中的#define定义全局int和二维矩阵

时间:2016-05-15 11:15:32

标签: c matrix global-variables

所以我在C中使用#define有点问题。我确定它只是一个小的语法问题,但我似乎无法找到它后面的内容梳理几个论坛。

我的代码是:

#include <math.h>
#include <stdio.h>
#include <stdlib.h>

#define max(x, y) (((x) > (y)) ? (x) : (y))
#define MAX_N (5)
#define m[MAX_N][MAX_N]


int wineProfitMemorized(int price[], int n, int begin, int end) {
    int i, j;
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            m[i][j] = -99;
        }
    }
    int year = 0;
    ++year;
    if (begin > end) {
        return 0;
    }
    if (m[begin][begin] == -99){
        m[begin][begin] = price[begin] * year;
    }
    if (m[begin][end] == -99){
        m[begin][end] = price[end] * year;
    }
    return max(m[begin + 1][end] + m[begin][begin], m[begin][end - 1] + m[begin][end]);
}

我想要做的就是解决这个葡萄酒销售问题,这个问题最初是通过记忆来递归解决的。

我必须定义这两个变量MAX_N = 5和数组m [MAX_N] [MAX_N],以便我可以在稍后将要面对的动态编程方法中进一步访问它。我必须打印出来并用值填充它,因此它不能是只读的。

有人可以告诉我#define有什么问题吗?它会在方法中产生多个错误,例如&#34;缺失;&#34;和#34;语法错误&#34;。

1 个答案:

答案 0 :(得分:2)

您将宏定义与变量声明混淆。前两个宏很好,但第三个宏需要更改为声明。只需替换:

#define m[MAX_N][MAX_N]

使用:

int m[MAX_N][MAX_N];

这应该有所帮助。