3 条题解

  • 0
    @ 2022-07-29 15:04:23

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    #define MAX 20
    int f[MAX][MAX]={0};
    int Number(int m, int n);
    int a[10010];

    int main()
    {
    int t , n ,m , j,i=0;
    scanf("%d",&t);
    while(t--)
    {
    memset(f,0,sizeof(f));
    scanf ("%d %d", &m, &n);
    a[i++]=Number(m,n);
    //printf("%d",Number(m,n));
    }
    for(j=0; j<i; j++)
    printf("%d\n",a[j]);
    return 0;
    }

    int Number(int m, int n)
    {
    int i,j;
    for(i=0;i<=m;i++)
    {
    f[i][0]=1;f[i][1]=1;//有一个盘子和没有有盘子的放法:1
    }
    for(j=0;j<=n;j++)

    {
    f[0][j]=1; f[1][j]=1;//有一个苹果和没有苹果的放法:1
    }
    for(i=2;i<=m;i++)//盘子

    for(j=2;j<=n;j++)//苹果
    {

    if(i>=j)
    f[i][j]=f[i][j-1]+f[i-j][j];

    if(i<j)

    f[i][j]=f[i][i];
    //printf(" %d \n",f[i][j]);
    }
    return f[m][n];
    }

  • -4
    @ 2019-09-23 21:42:42

    #include<stdio.h>

    int fun(int m,int n){

    if(m==0||n==1)

    return 1;

    if(n>m)

    return fun(m,m); //如果前面的小于后面的,则等于m个苹果放入m个盘子
    else

    return fun(m,n-1)+fun(m-n,n); //有空盘子的情况 + 没有空盘子的情况
    }

    int main(){

    int t,m,n,i=0;

    int a[20];
    scanf("%d",&t);

    while(t--){

    scanf("%d%d",&m,&n);

    //printf("%d\n",fun(m,n));

    a[i]=fun(m,n);
    i++;
    }
    for(t=0;t<i;t++)
    {
    printf("%d\n",a[t]);
    }

    return 0;

    }

  • -5
    @ 2019-04-27 21:30:32

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;

    define MAX 20

    int f[MAX][MAX]={0};
    int Number(int m, int n);
    int a[10010];

    int main()
    {
    int t , n ,m , j,i=0;
    scanf("%d",&t);
    while(t--)
    {
    memset(f,0,sizeof(f));
    scanf ("%d %d", &m, &n);
    a[i++]=Number(m,n);
    //printf("%d",Number(m,n));
    }
    for(j=0; j<i; j++)
    printf("%d\n",a[j]);
    return 0;
    }

    int Number(int m, int n)
    {
    int i,j;
    for(i=0;i<=m;i++)
    {
    f[i][0]=1;f[i][1]=1;//有一个盘子和没有有盘子的放法:1
    }
    for(j=0;j<=n;j++)

    {
    f[0][j]=1; f[1][j]=1;//有一个苹果和没有苹果的放法:1
    }
    for(i=2;i<=m;i++)//盘子

    for(j=2;j<=n;j++)//苹果
    {

    if(i>=j)
    f[i][j]=f[i][j-1]+f[i-j][j];

    if(i<j)

    f[i][j]=f[i][i];
    //printf(" %d \n",f[i][j]);
    }
    return f[m][n];
    }

  • 1

信息

ID
1031
难度
8
分类
(无)
标签
(无)
递交数
119
已通过
13
通过率
11%
被复制
8
上传者