据说有公式,不过我不知道~~ //2514528 2011-04-28 16:10:17 Accepted 1016 C 0 160 ylwh! #include <stdio.h> #include <string.h> int main(void) { int n,p[50], s[100], i, j, k,times; int w[50]; scanf("%d", ×); for(; times > 0; times--) { j=1; scanf("%d", &n); memset(s, 0, sizeof(s)); for(i=0; i<n; i++) { scanf("%d", &p[i]); if(p[i]<n) { s[p[i]+i]=1; } else { s[2*n-j]=1; j++; } } memset(w, 0, sizeof(w)); int k=0; for(i=1; i<2*n; i++) { if(s[i]!=1)continue; for(j=i-1; j>=0; j--) { if(s[j]==2) { w[k]++; } else if(s[j]==0) { w[k]++; s[j]=2; k++; break; } } } for(i=0; i<n; i++) { printf("%d", w[i]); if(i!=n-1)printf(" "); } if(times)printf("/n"); } return 0; }