此题就是求逆序数,递推关系很快就找到了,但是对与细节的还是悲剧啊!!!在此谢谢孔牛,看了他的解题报告后才AC!!! #include<stdio.h> int f[1005][10005]; int N,C; int main() { for(int i=1;i<1005;i++) { f[i][0]=1;f[i][1]=i-1; for(int j=2;j<10005;j++) f[i][j]=0; } for(int i=2;i<1005;i++) { int m=i*(i-1)/2; for(int j=2;j<10005;j++) { if(j>m) break; f[i][j]=f[i-1][j]+f[i][j-1]; f[i][j]%=1000000007; if(j-i>=0) f[i][j]-=f[i-1][j-i];//此处本因改是f[i][j]-=f[i][j-i]; //但是由于是递推,f[i][j]=f[i-1][j]+f[i][j-1] //f[i][j-1]已经把f[i][j-i-1]以及以后的想减掉了; if(f[i][j]<0) f[i][j]+=1000000007; } } while(scanf("%d%d",&N,&C)==2) { printf("%d/n",f[N][C]); } return 0; }