RT,看题解里面这个初始化看不明白。
题解代码:
#include <bits/stdc++.h>
using namespace std;
const int mod=100000000;
long long cow[2005],f[2005][2005];
int main()
{
int N,F;
scanf("%d%d",&N,&F);
for (register int i=1;i<=N;i++)
{
scanf("%d",&cow[i]);
cow[i]%=F;
}
for (register int i=1;i<=N;i++) f[i][cow[i]]=1;
for (register int i=1;i<=N;i++)
{
for (register int j=0;j<=F-1;j++)
{
f[i][j]=((f[i][j]+f[i-1][j])%mod+f[i-1][(j-cow[i]+F)%F])%mod;
}
}
printf("%d",f[N][0]);
return 0;
}
有没有哪位大佬解释一下为什么第21行的初始化是写f[i][cow[i]]=1;
当在i之前有多个相同的,等于cow[i]的cow值时为什么这样做不影响答案的正确性?