| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这题OLE是什么状况?#include <iostream>
#include <string>
#include <algorithm>
#define MAX 1000
using namespace std;
struct word_t {
string s;
int pos;
}word[MAX];
int lastidx[MAX];
int len;
int
get_lastindex (int m)
{
int idx1, idx2;
if (m > 0) {
int i = 0;
while (word[m].s[i] == word[m - 1].s[i]
&& i < word[m - 1].s.length())
{
i ++;
}
if (i == word[m].s.length()) {
idx1 = i;
} else {
idx1 = i + 1;
}
}
if (m < len - 1) {
int i = 0;
while (word[m].s[i] == word[m + 1].s[i]
&& i < word[m].s.length())
{
i ++;
}
if (i == word[m].s.length()) {
idx2 = i;
} else {
idx2 = i + 1;
}
}
lastidx[word[m].pos] = max (idx1, idx2);
}
bool
cmp1 (word_t w1, word_t w2)
{
return w1.s < w2.s;
}
bool
cmp2 (word_t w1, word_t w2)
{
return w1.pos < w2.pos;
}
int
main ()
{
//freopen ("test1.txt", "r", stdin);
//freopen ("myout.txt", "w", stdout);
len = 0;
while (cin >> word[len ++].s) {
word[len - 1].pos = len - 1;
}
-- len;
sort (word, word + len, cmp1);
for (int i = 0; i < len; ++ i) {
get_lastindex (i);
}
sort (word, word + len, cmp2);
for (int i = 0; i < len; ++ i) {
cout << word[i].s << " ";
word[i].s.resize(lastidx[i]);
cout << word[i].s << endl;
}
//system ("pause");
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator