为什么dp要先循环未进栈的,再循环栈内的
查看原帖
为什么dp要先循环未进栈的,再循环栈内的
137175
killerDK楼主2023/11/23 00:48
#include<iostream>
#include<cstdio>
#include<cstring>//为了NOIP不用万能头文件
using namespace std;
int f[20][20];//数据就给到18,开个20算大方的
int n;
int main()
{
    memset(f,0,sizeof(f));
    scanf("%d",&n);
    for(int i=0;i<=n;i++)
       f[i][0]=1;//边界一定要有
    for(int j=1;j<=n;j++)
       for(int i=0;i<=n;i++)
       //我们要推f[0][n],所以i要从零开始跑
        {
          if(i>=1) 
            f[i][j]=f[i-1][j]+f[i+1][j-1];
          if(i==0)//栈内没有东西
            f[i][j]=f[i+1][j-1];
        }
    printf("%d",f[0][n]);
    return 0;
}

这个题解里面就是,但是不理解

2023/11/23 00:48
加载中...