| ||||||||||
| 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 | |||||||||
各位大虾,为什么我用printf输出就错了,用cout就可以AC。。。。结果都一样啊#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
#define N 10005
struct STRING
{
string s;
string prefix;
int no;
}str[N];
bool cmp(STRING a,STRING b)
{
return a.s<b.s;
}
bool cmp2(STRING a,STRING b)
{
return a.no<b.no;
}
void get_prefix(int n)
{
int i,j,k;
for(i=0;i<n;i++)
{
int temp=str[i].s.length();
for(j=1;j<temp;j++)
{
string sub=str[i].s.substr(0,j);
for(k=0;k<n;k++)
if(k!=i&&sub==str[k].s.substr(0,j))
break; //如果出现重复,则break
if(k==n) //表示没有出现重复,可以将其作为前缀
{
str[i].prefix=str[i].s.substr(0,j);
break;
}
}
if(j==temp) //如果遍历整个串都无法找到当前串,则将整个串作为其前缀
str[i].prefix=str[i].s;
}
}
int main()
{
char ch[20];
int i=0,j;
while(scanf("%s",ch)!=EOF)
{
str[i].s="";
str[i].s+=ch;
str[i].no=i;
i++;
}
sort(str,str+i,cmp);
//for(j=0;j<i;j++)
// cout<<str[j].s<<endl;
//cout<<endl;
get_prefix(i);
sort(str,str+i,cmp2);
for(j=0;j<i;j++)
{
char temp[20];
char temp2[20];
strcpy(temp2,str[j].s.c_str());
strcpy(temp,str[j].prefix.c_str());
printf("%s %s\n",temp2,temp);
}
//cout<<str[j].s<<" "<<str[j].prefix<<endl;
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator