POJ 1472

来源:互联网 发布:僵尸变脸软件下载 编辑:程序博客网 时间:2024/05/29 03:42
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;char command[117];char opnum[10117];int solve(int exps[]){    memset(command, 0, sizeof(command));    scanf("%s", command);    if(command[0] == 'E'){        return 0;    }    else if(command[0] == 'B'){        while(solve(exps));    }    else if(command[0] == 'L'){        int i, t = -1;        int texps[20] = {0};        scanf("%s", opnum);        if(opnum[0] != 'n'){            t = atoi(opnum);        }        while(solve(texps));        if(t == -1){            for(i = 10; i > 0; i--){                texps[i] = texps[i - 1];            }            texps[0] = 0;        }        else{            for(i = 0; i <= 10; i++){                texps[i] *= t;            }        }        for(i = 0; i <= 10; i++){            exps[i] += texps[i];        }    }    else if(command[0] == 'O'){        scanf("%s", opnum);        int t = atoi(opnum);        exps[0] += t;        return solve(exps);    }return 1;}int main(){    int k, i, j, mflag, mcount = 1;    int exps[20];    while(scanf("%d", &k) != EOF){        while(k--){            memset(exps, 0, sizeof(exps));            mflag = 0;            solve(exps);            printf("Program #%d\n", mcount++);            printf("Runtime = ");            for(i = 11; i >= 2; i--){                if(exps[i] != 0 && mflag != 0){                    if(exps[i] != 1){                        printf("+%d*n^%d", exps[i], i);                    }                    else{                        printf("+n^%d", i);                    }                }                else if(mflag == 0 && exps[i] != 0){                    mflag = 1;                    if(exps[i] != 1){                        printf("%d*n^%d", exps[i], i);                    }                    else{                        printf("n^%d", i);                    }                }            }            if(exps[1] != 0 && mflag != 0){                if(exps[1] != 1){                    printf("+%d*n", exps[1]);                }                else{                    printf("+n");                }            }            else if(exps[1] != 0 && mflag == 0){                mflag = 1;                if(exps[1] != 1){                    printf("%d*n", exps[1]);                }                else{                    printf("+n");                }            }            if(exps[0] != 0 && mflag != 0){                printf("+%d", exps[0]);            }            else if(exps[0] != 0 && mflag == 0){                mflag = 1;                printf("%d", exps[0]);            }            if(mflag == 0){                printf("0");            }            printf("\n\n");        }    }return 0;}

递归模拟,代码写的很烂还参考了网上的=_=
0 0
原创粉丝点击