HDOJ 1736 美观化文字


题目地址:

http://acm.hdu.edu.cn/showproblem.php?pid=1736


粗略一看以为是要用wchar_t和wcin,wcout输入输出,可是看来错了。。。。

在题目看面有这么一个Hint:

你可以认为所有中文字符由两个字节组成,首字节的ASCII值都大于127(也可以理解为signed char型小于0)
意思就是直接用char保存,当检测到第一个是小于0时,再检测第二个,把把第一个和第二个组成中文字。

这里不光考察了这些,还考察了细心。

给好多一直WA的朋友一组数据大家就知道自己为何WA了(对于大部分应该都是这里错了):

“ddddd”ddddd”ddddd”(输入包括第一个和最后一个双引号,第一个和最后一个是中文的引号,中间2个是英文的引号)

大家看懂没?第一个字符是中文的”“”

最后一个也是中午的”””

那么输出应该是:
“ddddd”ddddd“ddddd”

大家看看自己是不是这里只考虑了遇到” ” “或 ” ” ” 才变的。


OK,给代码了:

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
 
 
//  Accepted 1736 0MS 1208K 1464 B C++ Tanky Woo 
 
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
 //wchar_t ch;
 //wcin.imbue(locale("chs"));   //这里不能用wchar_t来输入输出汉字
 
 //wcout.imbue(locale("chs"));
 int flag = 0;  // 0表示左边,1表示右边
 char article[1000000];
    while(gets(article) != NULL)
    {
     flag = 0;
     int len = strlen(article);
      for(int i=0; i<len; ++i)
   { 
      string tmp ;
   tmp =  tmp+article[i] + article[i+1];   // 这里判断是否遇到了"“"或"”"
          if(tmp=="“" || tmp=="”")
              flag = !flag;  
   if(article[i] == ',')
               cout << ",";
        else if(article[i] == '.')
                  cout << "。";
           else if(article[i] == '!')
                 cout << "!";
           else if(article[i] == '"')
           {
                if(flag == 0)
                    cout << "“";
                else
                    cout << "”";
                flag = !flag;
            }
            else if(article[i] == '<' && article[i+1]=='<')
            {
                  cout << "《";
                  i++;
            }
            else if(article[i] == '>' && article[i+1]=='>')
            {
                  cout << "》";
                  i++;
            }
             else if(article[i] == '?')
                 cout << "?";
             else
                  cout << article[i];
  }
  cout << endl;
    }
 return 0;
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

发表评论

电子邮件地址不会被公开。 必填项已用*标注