• zoj 3930 Dice Notation 模拟


    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3930

    比较简单的模拟题

      1 #include <bits/stdc++.h>
      2 using namespace std;
      3 int T;
      4 string s;
      5 vector <string> v;
      6 int main()
      7 {
      8     scanf("%d", &T);
      9     getchar();
     10     while(T--)
     11     {
     12         getline(cin, s);
     13         v.clear();
     14 
     15         for(int i = 0; i < s.size(); i++)
     16         {
     17             if(s[i] == ')' || s[i] == '(') continue;
     18             else if(s[i] == ' ') continue;
     19             else if(s[i] == '*' || s[i] == '/' || s[i] == '+'
     20                     || s[i] == '-') continue;
     21 
     22             if(s[i] == 'd')
     23             {
     24                 string sz = "";
     25                 int j;
     26                 for(j = i+1; j < s.size(); j++)
     27                 {
     28                     if(!isdigit(s[j])) break;
     29                     else sz += s[j];
     30                 }
     31                 i = j-1;
     32                 string ans = "[d";
     33                 ans += sz; ans += "]";
     34                 v.push_back(ans);
     35             }
     36             else if(isdigit(s[i]))
     37             {
     38                 bool isdig = true;
     39                 int j;
     40 
     41                 string temp =""; temp += s[i];
     42                 for(j = i+1; j < s.size(); j++)
     43                 {
     44                     if(s[j] == ')' || s[j] == '(') break;
     45                     else if(s[j] == ' ') break;
     46                     else if(s[j] == '*' || s[j] == '/'
     47                     || s[j] == '+' || s[j] == '-') break;
     48                     
     49                     else if(s[j] == 'd')
     50                     {
     51                         isdig = false;
     52                         temp += s[j];
     53                     }
     54                     else if(isdigit(s[j]))
     55                     {
     56                         temp += s[j];
     57                     }
     58                 }
     59 
     60                 i = j-1;
     61 
     62                 if(isdig == true) v.push_back(temp);
     63                 
     64                 else if(isdig == false)
     65                 {
     66                     long long cnt = 0;
     67                     long long mul = 1;
     68                     string sz = "";
     69                     string last = "[d";
     70                     int posd;
     71                     for(int j = 0; j < temp.size(); j++)
     72                     {
     73                         if(temp[j] == 'd') 
     74                         {
     75                             posd = j; break;
     76                         }
     77                         else sz += temp[j];
     78                     }
     79                     
     80                     for(int j = sz.size()-1; j >= 0; j--)
     81                     {
     82                         cnt += (sz[j]-'0')*mul;
     83                         mul *= 10;
     84                     }
     85 
     86                     for(int j = posd+1; j < temp.size(); j++)
     87                     {
     88                         last += temp[j];
     89                     }
     90                     last += ']';
     91                     
     92                     string ans;
     93                 /*    if(cnt == 0)
     94                     {
     95                         v.push_back("");
     96                         continue;
     97                     }*/
     98                     if(cnt > 1) ans = "(";
     99                     else ans = "";
    100                     for(int j = 1; j <= cnt; j++)
    101                     {
    102                         if(j == 1) ans += last;
    103                         else 
    104                         {
    105                             ans += " + "; ans += last;
    106                         }
    107                     }
    108                     if(cnt > 1) ans += ")";
    109                     v.push_back(ans);
    110                 }
    111             }
    112         }
    113         /*cout<<"Case "<<T<<endl;
    114         for(int i = 0; i < v.size(); i++)
    115         {
    116             cout<<v[i]<<endl;
    117         }*/
    118 
    119         int cnt = 0;
    120         for(int i = 0; i < s.size(); i++)
    121         {
    122             if(s[i] == ')' || s[i] == '(') printf("%c", s[i]);
    123             else if(s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/') 
    124             {
    125                 printf(" %c ", s[i]);
    126             }
    127             else if(s[i] == ' ') continue;
    128             else if(s[i] == 'd' || isdigit(s[i]))
    129             {
    130                 cout<<v[cnt]; cnt++;
    131                 int j;
    132                 for(j = i+1; j < s.size(); j++)
    133                 {
    134                     if(s[j] == ')' || s[j] == '(' || s[j] == '+' || s[j] == '-' || s[j] == '*' || s[j] == '/') break;
    135                 }
    136                 i = j-1;
    137             }
    138         }
    139         printf(" = [Result]
    ");
    140     }
    141     return 0;
    142 }
  • 相关阅读:
    【Cocos2d-Js基础教学(3)各种基类的定义和使用】
    【Cocos2d-Js基础教学(2)类的使用和面向对象】
    【Cocos2d-x 3.X 资源及脚本解密】
    Django项目中使用Redis
    Django项目中使用Redis
    Django学习笔记二
    Django初识 学习笔记一
    前端之HTML(一)
    mysql(三) 数据表的基本操作操作
    python 词云小demo
  • 原文地址:https://www.cnblogs.com/titicia/p/5382783.html
Copyright © 2020-2023  润新知