Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
一遍扫描的方案,时间复杂度应该比较低,不过不知道为什么占那么多内存Problem: 1068 Memory: 336K Time: 0MS Language: GCC Code Length: 686B #include <stdio.h> static int stack[255]; static int top = 0; int main() { int n_case, n, v, pv, i, j, k; scanf("%d\n", &n_case); for(i=0; i<n_case; ++i) { scanf("%d\n", &n); pv = 0; top = 1; stack[0] = 0; for(j=0;j<n;++j) { scanf("%d", &v); if(j != 0) printf(" "); if(v > pv + 1) { for(k=0; k<v-pv-2; ++k) { stack[top++] = 0; } stack[top++] = 1; printf("1"); pv = v; } else if(v > pv) { stack[top-1] += 1; printf("1"); pv = v; } else { v = stack[--top] + 1; printf("%d", v); stack[top-1] += v; } } printf("\n"); } return 0; } /********************************************/ 我是新手,请高手指点一下为何内存占用会那么大? 栈分配了那么多的空间让我很苦恼,不过即便这样也不该占那么多的内存啊 256 * 4 也只有 1K 而已 Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator