1 条题解

  • 0
    @ 2021-6-14 23:29:20

    C :

    #include <stdio.h>
    #include<string.h>
    int main() 
    {  
          int n,x,a[7][201],i,j;  
          while(scanf("%d%d",&n,&x)!=EOF)  
          {  
              memset(a,0,sizeof(a)); 
              for(j=0;j<=n;j++) 
                  a[1][j]=1; 
              for(i=2;i<=x;i++) 
              for(j=0;j<=n-x;j++) 
              {  
                  if(j>=i)  
                      a[i][j]=a[i-1][j]+a[i][j-i]; 
                  else  
                      a[i][j]=a[i-1][j]; 
              }  
              printf("%d\n",a[x][n-x]); 
          }  
          return 0; 
    }  
    

    C++ :

    #include<iostream>
    #include<cstring>
    using namespace std;
    int count=0;
    void f(int n,int x,int  mi)
    {
    	if (n<mi) return ;
    	if (x==1 && n>=mi) count++;
    	else 
    	{
    		int i;
    		for (i=mi;i<=n/x;i++)
    			f(n-i,x-1,i);
    	}
    }
    
    int main()
    {
    	int i,n,k,max;
    while (	cin>>n>>k){
    count=0;
    //	if (n%k==0) max=n/k-1;
    	//else
    	 max=n/k;
    	for (i=1;i<=max;i++)
    	    f(n-i,k-1,i);
    	cout<<count<<endl;}
    	return 0;
    }
    

    Pascal :

    const
    	maxn=200;
    	maxk=6;
    var
    	n,k,i,j:longint;
    	f:array[0..maxn,0..maxk] of longint;
    
    
    	begin
    		readln(n,k);
    		f[0,0]:=1;
    		for i:=1 to n do
    			for j:=1 to k do
    				if(i>=j)then
    					f[i,j]:=f[i-j,j]+f[i-1,j-1];
    		writeln(f[n,k]);
    	end.
    
    
    • 1

    信息

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