哇塞,这个题我一遍过。我也是惊喜万分啊,哈哈
这个题我猛地看到
真的是一点头绪没有,想了一个钟头,终于有思路了
但是又觉得自己的太麻烦,
就想放弃,想看看人家的结题报告,
幸亏我看到了博客上的一篇文章,让我放弃了这个念头。终于从上午到现在,我不断地写,不断地改,终于按照自己的西路写了出来
而且是一遍过;
这个题真的是写起来很麻烦的,只有这一点,我最后也客服了、以后还是按照自己的思路来做 ,
按照自己的思路写出来之后,再看人家的结题报告。学学人家的算法,或简洁的编程语言!!
思路:
1、读进忽略词
2、读进title
3、利用忽略词,在title中查找关键词,
4、将关键词放入另一个结构体中记下它的title序号和word序号,
5、利用快排,将结构体按照字典序排序,不要忘了对所有的keyword进行toupper()。
这个题我猛地看到
真的是一点头绪没有,想了一个钟头,终于有思路了
但是又觉得自己的太麻烦,
就想放弃,想看看人家的结题报告,
幸亏我看到了博客上的一篇文章,让我放弃了这个念头。终于从上午到现在,我不断地写,不断地改,终于按照自己的西路写了出来
而且是一遍过;
这个题真的是写起来很麻烦的,只有这一点,我最后也客服了、以后还是按照自己的思路来做 ,
按照自己的思路写出来之后,再看人家的结题报告。学学人家的算法,或简洁的编程语言!!
思路:
1、读进忽略词
2、读进title
3、利用忽略词,在title中查找关键词,
4、将关键词放入另一个结构体中记下它的title序号和word序号,
5、利用快排,将结构体按照字典序排序,不要忘了对所有的keyword进行toupper()。
6、输出,对每行的唯一的keyword进行toupper(),其他的一律tolower();
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
using namespace std;
string key[50];
struct title
{
int len;
string b[15];
};
struct alpha
{
int i, j;
string c;
};
alpha str[3000];
title t[200];
string temp;
string & mylower(int i, int j)
{
temp = "";
int len = t[i].b[j].size();
for(int k = 0; k < len; k++)
{
temp+=tolower(t[i].b[j][k]);
}
return temp;
}
string & myupper(int i, int j)
{
temp = "";
int len = t[i].b[j].size();
for(int k = 0; k < len; k++)
{
temp+=toupper(t[i].b[j][k]);
}
return temp;
}
int com (const void *a,const void *b)
{
alpha * c = (alpha*)a;
alpha * d = (alpha*)b;
if(strcmp(c->c.data(),d->c.data())!=0)
return strcmp(c->c.data(),d->c.data());
else if(c->i-d->i!=0)
return c->i-d->i;
else return c->j-d->i;
}
int main ()
{
int i = 0, j = 0, num = 0;
string d;
int flag = 0;
for(i = 0;; i++)
{
getline(cin,key[i]);
//cout<<key[i]<<endl;
if(key[i].size() == 2&& key[i][0]==':'&&key[i][1] == ':')
{
i;
break;
}
}
int bnum = 0;
while(cin>>t[j].b[bnum++])
{
if(cin.get() == '\n')
{
j++ ;t[j-1].len = bnum;
bnum = 0;
}
}
for(int k = 0; k < j; k++)
{
for(int h = 0; h < t[k].len; h++)
{
flag = 0;
d = mylower(k,h);//
for(int u = 0; u < i; u++)
{//cout<<key[u]<<"-->"<<d<<endl;
if(key[u]==d)
{//cout<<key[u]<<"=="<<d<<endl;
flag = 1;
break;
}
}
if(!flag)
{
str[num++].c = d;
//cout<<"COPY:"<<d<<endl;
str[num-1].i = k;
str[num-1].j = h;
}
}
}
qsort(str,num,sizeof(str[0]),com);
for(int y = 0; y < num; y++)
{
int row = str[y].i;
int cl = str[y].j;
int len = t[row].len;
for(int x = 0; x < len ; x++)
{
if(x == cl)cout<<myupper(row,x);
else cout<<mylower(row,x);
if(x!=len-1)cout<<" ";
}
cout<<endl;
}
return 0;
}