#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
using namespace std;
int s[10000000];
int n,m,a;
int main()
{
cin>>m>>n;
s[0]=1;
for (int i=1;i<=n;++i)
{
cin>>a;
for (int j=m;j>=a;--j)
s[j]+=s[j-a];
}
cout<<s[m];
return 0;
}
对于上面的程序,使用
5 10
3 4 1 2 0 -5 -2 -4 -1 -3
这一组数据可以成功运行,但是使用
5 10
3 4 1 2 0 -5 -2 -4 -100 -3
这一组数据将会导致 RE。
为何都会访问负数下标,结果会有这样的不同?求解答,悬关。