您的位置:首页 > 其它

HDU 1088 输入输出格式题

2017-04-03 16:56 288 查看

Write a simple HTML Browser

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 11882    Accepted Submission(s): 3421


[align=left]Problem Description[/align]
If you ever tried to read a html document on a Macintosh, you know how hard it is if no Netscape is installed.

Now, who can forget to install a HTML browser? This is very easy because most of the times you don't need one on a MAC because there is a Acrobate Reader which is native to MAC. But if you ever need one, what do you do?

Your task is to write a small html-browser. It should only display the content of the input-file and knows only the html commands (tags) <br> which is a linebreak and <hr> which is a horizontal ruler. Then you should treat all tabulators, spaces and newlines
as one space and display the resulting text with no more than 80 characters on a line.

 

[align=left]Input[/align]
The input consists of a text you should display. This text consists of words and HTML tags separated by one or more spaces, tabulators or newlines.

A word is a sequence of letters, numbers and punctuation. For example, "abc,123" is one word, but "abc, 123" are two words, namely "abc," and "123". A word is always shorter than 81 characters and does not contain any '<' or '>'. All HTML tags are either <br>
or <hr>.

 

[align=left]Output[/align]
You should display the the resulting text using this rules:

  . If you read a word in the input and the resulting line does not get longer than 80 chars, print it, else print it on a new line.

  . If you read a <br> in the input, start a new line.

  . If you read a <hr> in the input, start a new line unless you already are at the beginning of a line, display 80 characters of '-' and start a new line (again).

The last line is ended by a newline character.

 

[align=left]Sample Input[/align]

Hallo, dies ist eine
ziemlich lange Zeile, die in Html
aber nicht umgebrochen wird.
<br>
Zwei <br> <br> produzieren zwei Newlines.
Es gibt auch noch das tag <hr> was einen Trenner darstellt.
Zwei <hr> <hr> produzieren zwei Horizontal Rulers.
Achtung mehrere Leerzeichen irritieren

Html genauso wenig wie

mehrere Leerzeilen.

 

[align=left]Sample Output[/align]

Hallo, dies ist eine ziemlich lange Zeile, die in Html aber nicht umgebrochen
wird.
Zwei

produzieren zwei Newlines. Es gibt auch noch das tag
--------------------------------------------------------------------------------
was einen Trenner darstellt. Zwei
--------------------------------------------------------------------------------
------------------------------------------------------------------------
4000
--------
produzieren zwei Horizontal Rulers. Achtung mehrere Leerzeichen irritieren Html
genauso wenig wie mehrere Leerzeilen.

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

分析:一个输入输出格式的题。注意点:

1.一行80个字符,最后一个单词没有空格

2.判断是否要开新行

3.注意空格要占用一个字符的位置

。。。。。PE好久才把这题过了

#include<iostream>
#include<string>
using namespace std;

#define maxn 1000
#define LOCAL

string buff[maxn];
int totlen;
int n = 0;
const int maxLen = 80;

int main() {

#ifdef LOCAL
freopen("ACMinput.txt", "r", stdin);
#endif

while (cin >> buff[n++]);
int curlen = 0;
totlen = 0;
for (int i = 0; i < n-1; i++) {
if (buff[i] == "<br>") {
cout << endl;
totlen = 0;
}
else if (buff[i] == "<hr>") {
if (totlen) cout << endl;//判断是否开新行
for (int i = 0; i < maxLen; i++)
cout << "-";
cout << endl;
totlen = 0;
}
else { //注意技巧,第一个单词不输出空格,后面的单词在前面输出空格
curlen = buff[i].length();
if (!totlen) {
totlen = curlen;
cout << buff[i];
}
else if (curlen + totlen + 1 > 80) {
totlen = curlen;
cout << endl << buff[i];
}
else {
totlen += curlen + 1;
cout << " " << buff[i];
}
}
}
cout << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: