zoukankan      html  css  js  c++  java
  • poj 2246 递归 zoj 1094

    #include <iostream>
    #include <algorithm>
    #include <stdio.h>
    #include <string.h>
    #include <cmath>
    #include <stack>
    using namespace std;
    struct node
    {
    int m,n;
    // bool f;
    };
    node hash[200];
    char s[1000];
    int main()
    {
    int i,n,sum;
    char c;
    bool b;
    scanf("%d",&n);
    while(n--)
    {
    getchar();
    scanf("%c",&c);
    scanf("%d%d",&hash[c].m,&hash[c].n);
    }
    node temp,temp1;
    while(scanf("%s",s)!=EOF)
    { sum=0;b=1;
    stack<char> s1;
    stack<node> s2;
    for(i=0;s[i]!='';i++)
    {
    if(s[i]=='(')
    s1.push(s[i]);
    else if(s[i]==')')
    {
    c=s1.top();
    s1.pop();
    s1.pop();
    while(!s1.empty()&&s1.top()!='(')
    {
    temp=s2.top();
    s2.pop();
    temp1=s2.top();
    if(temp1.n!=temp.m)
    {
    b=0;break;
    }
    sum+=temp1.m*temp1.n*temp.n;
    temp1.n=temp.n;
    s2.pop();
    s2.push(temp1);
    s1.pop();
    }
    s1.push(c);
    }
    else
    {
    if(!s1.empty()&&s1.top()!='(')
    {
    temp=s2.top();
    if(temp.n!=hash[s[i]].m)
    {
    b=0;break;
    }
    sum+=temp.m*temp.n*hash[s[i]].n;
    temp.n=hash[s[i]].n;
    s2.pop();
    s2.push(temp);
    }
    else
    {
    s2.push(hash[s[i]]);
    s1.push('#');
    }
    }
    }
    if(b)
    printf("%d ",sum);
    else
    printf("error ");
    }
    return 0;
    }

    *************************************


    //hnldyhy(303882171) 10:20:27
    //POJ 2246(ZOJ 1094)                                                 堆栈

    #include <iostream>
    #include <stack>
    #define MAX 100
    using namespace std;
    struct node
    { int row;
    int col;
    } mat[27];
    stack <node> my;

    int main()
    {
    int n;
    while(scanf("%d", &n) != EOF)
    {
    getchar(); // 9 后面的换行
    int i;
    char ch;
    for(i = 1; i <= n; i++)
    {
    scanf("%c", &ch);
    int id = ch - 'A';
    scanf("%d%d", &mat[id].row, &mat[id].col);
    getchar();
    }
    char exp[110];
    while(scanf("%s", &exp) != EOF)
    {
    getchar(); //换行
    int len = strlen(exp);
    while (!my.empty()) my.pop();
    int total = 0;
    bool flag = true;
    int pos;
    for( pos = 0; pos < len; pos++)
    {
    if(exp[pos] == ')')
    {
    node t1, t2,t;
    t1 = my.top();
    my.pop();
    t2 = my.top();
    my.pop();
    t.row = t2.row;
    t.col = t1.col;
    if(t2.col != t1.row)
    { flag = false;
    break;
    }
    total += t2.row * t2.col * t1.col;
    my.push(t);
    }
    else if(exp[pos] != '(')
    {
    int id = exp[pos] - 'A';
    my.push(mat[id]);
    }
    }
    if(flag == false)
    printf("error ");
    else
    printf("%d ", total);
    }
    }
    }


    ************************************************************************
    // 递归

    #include <iostream>
    #define MAX 100
    using namespace std;
    struct node
    { int r;
    int c;
    int s;
    } ;

    int row[27],col[27];
    char exp[110];
    int pos;
    bool flag;

    struct node f()
    {
    struct node t,t1,t2;
    if (exp[pos]=='(')
    { pos++; t1=f(); t2=f();
    pos++;
    if (t1.c!=t2.r) flag=false;
    t.r = t1.r; t.c = t2.c;
    t.s=t1.s+t2.s+t1.r*t1.c*t2.c;
    }
    else if (exp[pos]!=')')
    { t.r=row[exp[pos]-'A'];
    t.c=col[exp[pos]-'A'];
    t.s=0;
    pos++;
    }
    return t;
    }

    int main()
    {
    int n;
    while(scanf("%d", &n) != EOF)
    {
    getchar();
    int i;
    char ch;
    for(i = 1; i <= n; i++)
    {
    scanf("%c", &ch);
    int id = ch - 'A';
    scanf("%d%d", &row[id], &col[id]);
    getchar();
    }
    while(scanf("%s", &exp) != EOF)
    {
    getchar();
    pos=0;
    flag=true;
    struct node t=f();
    if(flag == false)
    cout<<"error ";
    else
    cout<<t.s<<endl;
    }
    }
    }

  • 相关阅读:
    Android 7.0及以上使用OpenCL
    image_channel_data_type含义
    Valgrind.Callgrind使用
    如何在WIN10内置Ubuntu中有多个terminal
    Android: 在native中访问assets全解析
    OpenCL的buffer以及sub-buffer
    C语言程序设计(五) 选择控制结构
    C语言程序设计(三) 简单的算术运算和表达式
    C语言程序设计(二) C数据类型
    C语言程序设计(一) 为什么要学C语言
  • 原文地址:https://www.cnblogs.com/2014acm/p/3903186.html
Copyright © 2011-2022 走看看