数组的定义位置不同导致结果不同

#include
#include
using namespace std;
int value[3510], weight[3510];
int dp[13010];
int main()
{
int n, M;

cin >> n;
cin >> M;
for (int i = 1; i <= n; i++) {
    cin >> weight[i] >> value[i];
}
for (int i = 1; i <= n; i++) {
    for (int j = M; j >= weight[i]; j--) {
        dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
    }
}
cout << dp[M];
return 0;

}
最上面数组定义在主函数外面结果运行就是正确的,放在主函数里面也能运行但是结果是错的,为什么呢?

理论上讲没有区别,看一下是否是项目没有保存或者重新生成运作一下

数组的声明放在cin >>n;这一句上面和在main函数外面没什么区别。清理工程,保存一下,重新编译运行试试。