变成三角形前缀和,,每一斜线行+列相等,并依次递增2,3,4,5
int p=1;
for(int i = 1;i < 1510;i++)//遍历每条斜线
{
for(int j = i-1;j >= 1; j--)//遍历行坐标,列为i-j
{
a[j][i-j] = a[j-1][i-j]+a[j][i-j-1]-a[j-1][i-j-1] + p*p;//前缀和
ans[p] = a[j][i-j];
p++;
}
}
ans[1]=1,ans[2]=5
雪花那道题就是看有几个出现过一次的点,则外围有几条边,用总边减外边=内围边
D题那个dfs就是要清零我的vis!!!!多组数据测试时,前一次dfs里的vis没有清零会影响到后面的!!!导致第一个能过,后面都不能!!!!!注意重复利用的元素要清零!!!!!
然后要每个能走的位置都dfs一下求最大值,以免特殊情况一圈0里包一个很大的数!!!