1 条题解

  • 0
    @ 2025-2-14 21:20:39

    C :

    #include<stdio.h>
    
    int dp(int m,int n)
    {
    	if(!m||m==1||!n||n==1)
    		return 1;
    	if(m<n)
    		return dp(m,m);
    	return dp(m,n-1)+dp(m-n,n);
    }
    
    int main()
    {
    	int t,m,n;
    	while(scanf("%d",&t)!=EOF)
    	{
    		while(t--)
    		{
    			scanf("%d%d",&m,&n);
    			printf("%d\n",dp(m,n));
    		}
    	}
    	return 0;
    }
    

    C++ :

    #include<stdio.h>
    
    int dp(int m,int n)
    {
    	if(!m||m==1||!n||n==1)
    		return 1;
    	if(m<n)
    		return dp(m,m);
    	return dp(m,n-1)+dp(m-n,n);
    }
    
    int main()
    {
    	int t,m,n;
    	while(scanf("%d",&t)!=EOF)
    	{
    		while(t--)
    		{
    			scanf("%d%d",&m,&n);
    			printf("%d\n",dp(m,n));
    		}
    	}
    	return 0;
    }
    

    Java :

    import java.util.*;
    class Main
    {
        public static void main(String [] args)
        {
            
            Scanner in = new Scanner(System.in);
            while(in.hasNext())
            {
                int a = in.nextInt();
                for(int i=0;i<a;i++)
                {
                    int m = in.nextInt();
                    int n = in.nextInt();
                   System.out.println(fun(m,n));
                }
            }
        }
        public static  int fun (int m, int n)
        {
            if(m==0 || n==1)
                return 1;
            if(n>m)
                return fun(m,m);
            else
                return fun(m,n-1) + fun(m-n,n);
        }
    }
    
    • 1

    信息

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