1 条题解

  • 0
    @ 2022-7-27 11:14:22
    简单dp
    #include<bits/stdc++.h>
    using namespace std;
    long f[1005][1005],i,j,n,m;
    long read()
    {
    	long x=0,f=1;
    	char ch=getchar();
    	while(ch<'0'||ch>'9'){
    		if(ch=='-')f=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9')
    	{
    		x=x*10+(ch-'0');
    		ch=getchar();
    	}
    	return x*f;
    }
    void write(long x) {
    	if(x<0){
    		putchar('-');
    		write(-x);
    		return;
    	}
    	if(x>=10)write(x/10);
    	putchar(x%10+'0');
    }
    int main()
    {
       n=read(),m=read();
       for(i=1;i<=n;i++)f[i][0]=f[i][1]=1;//初始值
       for(i=2;i<=n;i++)
          for(j=2;j<=m;j++)
          {
             f[i][j]=f[i-1][j-1];
             if(i>j)f[i][j]+=f[i-j][j]; //简单的动态转移方程
          }
       write(f[n][m]);
    	return 0;
    }
    • 1

    信息

    ID
    56
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    53
    已通过
    15
    上传者