栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1014 Operand

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1014 Operand

#include <stdio.h> #define MAXexpression 100000 #define MAXDIVISION 1000char expression_NAME, expression[MAXexpression], RESULT[MAXexpression];int DIVISION[MAXDIVISION], N, DIVISION_TMES;int JUMP_BRACKET(char expression[], int i){    int left_bracket = 1, right_bracket = 0;    while(1)    {        i++;        if(expression[i] == '(') left_bracket ++;        else if(expression[i] == ')')        { right_bracket ++; if(left_bracket == right_bracket)     return i+1;        }    }}char GET_LOWEST_OPERATOR(char expression[]){    char lowest_operator = 0;    int i;    if(expression[0] == '(')    {        i = JUMP_BRACKET(expression, 0);        if(( expression[i]) == 0) return -(i-2);    }    for(i=0; expression[i] != 0; i++)    {        if(expression[i] == '(') i = JUMP_BRACKET(expression, i) - 1;        else if(expression[i] == '+') return '+';        else if(expression[i] == '*')  lowest_operator = '*';        else if(expression[i] == '^' && lowest_operator != '*') lowest_operator = '^';    }    return lowest_operator;}void GET_RESULT(char final_expression[]){    int i;    for(i=0; final_expression[i]!=0; i++)        RESULT[i] = final_expression[i];    RESULT[i] = 0;}int COPY(char cur_expression[], int i, char pre_expression[], int n, int m){    for(; n<=m; n++,i++)        cur_expression[i] = pre_expression[n];    cur_expression[i] = 0;    return i;}void PROCEED(int div_num, char pre_expression[]) {    char cur_expression[MAXexpression];    char lowest_operator;    int i, j, k, expression_num;    if(div_num == DIVISION_TMES)    {        GET_RESULT(pre_expression);        return;    }    lowest_operator = GET_LOWEST_OPERATOR(pre_expression);    if(lowest_operator == 0)    {        GET_RESULT(pre_expression);        return;    }    if(lowest_operator < 0)    {        COPY(cur_expression, 0, pre_expression, 1, -lowest_operator);        PROCEED(div_num+1, cur_expression);        return;    }    expression_num = 0;    for(i=0; ; i++)    {        if(pre_expression[i] == lowest_operator)        { expression_num ++; i++;        }        if(expression_num == DIVISION[div_num] - 1)        { j=0; while(1) {     if(pre_expression[i] == '(')     {         k = JUMP_BRACKET(pre_expression, i);         j = COPY(cur_expression, j, pre_expression, i, k-1);         i = k;     }     if(pre_expression[i] == lowest_operator || pre_expression[i] == 0)      {         cur_expression[j] = 0;         PROCEED(div_num+1, cur_expression);         return;     }     cur_expression[j] = pre_expression[i];     j++;     i++; }        }        if(pre_expression[i] == '(') i = JUMP_BRACKET(pre_expression, i) - 1;    }}int main(){    int i, j, count = 0;    while((expression_NAME = getchar()) != '*')    {        getchar();        getchar();        count ++;        if(count > 1) putchar(10);        printf("expression %c:n", expression_NAME);        scanf("%s", expression);        scanf("%d", &N);        for(i=0; i<N; i++)        { for(j=0; ; j++) {     scanf("%d", &DIVISION[j]);     if(getchar() == 10)     {         DIVISION_TMES = j + 1;         break;     } } PROCEED(0, expression); for(j=DIVISION_TMES-1; j>=0; j--)     printf("op(%d,", DIVISION[j]); printf("%c", expression_NAME); for(j=DIVISION_TMES-1; j>=0; j--)     printf(")"); printf("=%sn", RESULT);        }    }}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379657.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号