zoukankan      html  css  js  c++  java
  • [HDOJ4782]Beautiful Soup(模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4782

    题意:给html代码美化一下。

      细节很重要,有一个坑点就是,文本换行的时候有坑,就是会向上缩并且加空格。

      1 #include <algorithm>
      2 #include <iostream>
      3 #include <iomanip>
      4 #include <cstring>
      5 #include <climits>
      6 #include <complex>
      7 #include <cassert>
      8 #include <cstdio>
      9 #include <bitset>
     10 #include <vector>
     11 #include <deque>
     12 #include <queue>
     13 #include <stack>
     14 #include <ctime>
     15 #include <set>
     16 #include <map>
     17 #include <cmath>
     18 using namespace std;
     19 #define fr first
     20 #define sc second
     21 #define cl clear
     22 #define BUG puts("here!!!")
     23 #define W(a) while(a--)
     24 #define pb(a) push_back(a)
     25 #define Rint(a) scanf("%d", &a)
     26 #define Rll(a) scanf("%I64d", &a)
     27 #define Rs(a) scanf("%s", a)
     28 #define Cin(a) cin >> a
     29 #define FRead() freopen("in", "r", stdin)
     30 #define FWrite() freopen("out", "w", stdout)
     31 #define Rep(i, len) for(int i = 0; i < (len); i++)
     32 #define For(i, a, len) for(int i = (a); i < (len); i++)
     33 #define Cls(a) memset((a), 0, sizeof(a))
     34 #define Clr(a, x) memset((a), (x), sizeof(a))
     35 #define Full(a) memset((a), 0x7f7f7f, sizeof(a))
     36 #define lrt rt << 1
     37 #define rrt rt << 1 | 1
     38 #define pi 3.14159265359
     39 #define RT return
     40 #define lowbit(x) x & (-x)
     41 #define onecnt(x) __builtin_popcount(x)
     42 typedef long long LL;
     43 typedef long double LD;
     44 typedef unsigned long long ULL;
     45 typedef pair<int, int> pii;
     46 typedef pair<string, int> psi;
     47 typedef pair<LL, LL> pll;
     48 typedef map<string, int> msi;
     49 typedef vector<int> vi;
     50 typedef vector<LL> vl;
     51 typedef vector<vl> vvl;
     52 typedef vector<bool> vb;
     53 
     54 const int maxn = 20200;
     55 const char* endx = "</html>";
     56 char tmp;
     57 char s[maxn];
     58 char tag[maxn];
     59 int depth, n;
     60 bool ex = 0;
     61 
     62 void p(int x) {
     63   Rep(i, x) printf(" ");
     64 }
     65 
     66 void f() {
     67   n = 0;
     68   while(tmp != '>') {
     69     s[n++] = tmp;
     70     tmp = getchar();
     71   }
     72   s[n++] = '>';
     73   s[n] = 0;
     74   if(s[1] == '/') {
     75     depth -= 1;
     76     p(depth);
     77   }
     78   else {
     79     p(depth);
     80     if(s[n-2] != '/') depth += 1;
     81   }
     82   if(strstr(s, endx) != NULL) ex = 1;
     83   printf("%s
    ", s);
     84 }
     85 
     86 void g() {
     87   bool first = 1;
     88   p(depth);
     89   while(1) {
     90     if(!first) p(1);
     91     while(tmp != ' '&& tmp != '
    ' && tmp != '	' && tmp != '<') {
     92       putchar(tmp); tmp = getchar();
     93     }
     94     first = 0;
     95     while(tmp == ' ' || tmp == '
    ' || tmp == '	') tmp = getchar();
     96     if(tmp == '<') {
     97       puts("");
     98       f();
     99       break;
    100     }
    101   }
    102 }
    103 
    104 signed main() {
    105   //FRead();
    106   int T, _ = 1;
    107   Rint(T);
    108   W(T) {
    109     printf("Case #%d:
    ", _++);
    110     depth = 0; ex = 0;
    111     while(1) {
    112       if(ex) break;
    113       tmp = getchar();
    114       while(tmp == ' ' || tmp == '
    ' || tmp == '	') tmp = getchar();
    115       if(tmp == '<') f();
    116       else g();
    117     }
    118   }
    119   RT 0;
    120 }
  • 相关阅读:
    LODOP、C-LODOP注册号的区别
    Lodop强制分页LODOP.NewPage()和LODOP.NewPageA()
    c-lodop云打印实现手机打印 JS语句打印
    如何取消浏览器护眼色 Lodop打印图片有窗口颜色的边框
    PS中如何提高修改psd图片的效率(自动选择工具)
    Lodop如何打印直线
    Lodop打印控件 如何打印虚线
    Lodop窗口的按钮、权限,隐藏或设置功能不可用
    ArrayList与LinkedList区别
    URLDecoder与URLEncoder
  • 原文地址:https://www.cnblogs.com/kirai/p/5894013.html
Copyright © 2011-2022 走看看