1 条题解

  • 0
    @ 2025-4-12 22:06:17

    C :

    #include <stdio.h>
    #include <string.h>
    int main()
    	{
     //freopen("inin.txt","r",stdin);
     //freopen("out.out","w",stdout);
     int n;
     int a,b,i,j;
     int arr[20][20];
    
     while(scanf("%d",&n)!=EOF)
     {
     	while(n--)
     	{
      scanf("%d%d",&a,&b);
      for(i=0;i<=a;i++)
      { arr[i][0]=1;
       arr[i][1]=1;
      }
      for(i=0;i<=b;i++)
      { arr[0][i]=1;
       arr[1][i]=1;
      }
      for(i=2;i<=a;i++)
       for(j=2;j<=b;j++)
        if(i>=j)
         arr[i][j]=arr[i][j-1]+arr[i-j][j];
        else
         arr[i][j]=arr[i][i];
      printf("%d\n",arr[a][b]);
      memset(arr,0,sizeof(arr));
     	}
     }
     return 0;
    }
    
     
    
    
    
    int f(int m, int n)
    
    {
    
           if( m == 0 || n == 1) return 1;  
    
           if(m<n) return f(m ,m);
    
           return f(m,n-1) + f(m-n , n);
    
    }
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    	
    	//freopen("F:\\TestFiles\\test.in","r",stdin);
    	//freopen("F:\\TestFiles\\test2.out","w",stdout);
    	int d[105][105];
    	memset(d,0,sizeof(d));
    	
    	for(int j=0;j<=100;j++){
    		d[0][j]=1;
    		d[1][j]=1;
    	}
    	
    	for (int i=2;i<=100;i++){
    		for (int j=1;j<=100;j++){
    			if (j>i) d[i][j]=d[i][i];
    			else d[i][j]=d[i][j-1]+d[i-j][j];
    		}
    	}
    	
    	
    	int t;
    	while(~scanf("%d",&t)){
    		while(t--){
    			int n,m;
    			scanf("%d%d",&n,&m);
    			printf("%d\n",d[n][m]);
    		}
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    2842
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者