2 条题解

  • 0
    @ 2022-8-2 11:14:24
    #pragma GCC optimize(3,"Ofast","inline")
    #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;
    }
    • 0
      @ 2022-7-7 18:50:52

      dp

      33分的没有判i<=j的情况

      66分的抄洛谷第一篇题解

      #include <bits/stdc++.h>
      using namespace std;
      const int N = 2005;
      int n, m, x, y, f[N][N];
      int main() {
      	cin >> n >> m;
      	for (int i = 1; i <= n; i ++)
      		f[i][1] = f[i][0] = 1;
      	for (int i = 2; i <= n; i ++)
      		for (int j = 2; j <= m; j ++)
      			if (i > j) f[i][j] = f[i - 1][j - 1] + f[i - j][j];
                  else f[i][j] = f[i - 1][j - 1];
      	cout << f[n][m] << '\n';
      	return 0;
      }
      
      • 1

      信息

      ID
      148
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      (无)
      递交数
      61
      已通过
      16
      上传者