我考场上打的程序连样例都没过,竟然还能骗来20分。。。

我也是呵呵一笑了

这是标程,此为递归做法

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
using namespace std;
int f(int p,int q) 
{
    if(q == 1) return 1;
    else if(p < q) return 0;
    else return f(p - 1,q - 1) + q * f(p - 1,q);
}
int main()
{
    int n,k;
    scanf("%d %d",&n,&k);
    printf("%d",f(n,k));
    return 0;
}

这是我考场上改了40分钟都没过样例后来终于被别人改过来的程序

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
using namespace std;
int s[30][30];
int n,k,i,j;
int main()
{
//    freopen("setsub.in","r",stdin);
//    freopen("setsub.out","w",stdout);
    
    scanf("%d%d",&n,&k);
    s[1][1] = 1;
    s[1][0] = 0;
    s[0][1] = 0;
    for(i = 1;i <= n;i++)
    {
        for(j = 1;j <= i;j++)
        {
            s[i][j] = s[i - 1][j - 1] + j * s[i - 1][j];
            s[1][1] = 1;
            printf("%d %d = %d\n",i,j,s[i][j]);
        }
    }
    printf("%d ",s[3][1]);
    printf("%d",s[n][k]);
    return 0;    
}