POJ 1318 Word Amalgamation C++版

一个半成品,

花了我一下午,但是还是有点小问题,累了,睡觉去的,改天继续。

问题就是搜索顺序不对,我是按顺序搜索的,他是排完序搜索的,结果无问题,在G++下编译,

懒得解释题目了,郁闷

代码如下:

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
61
62
63
64
65
66
67
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

typedef struct node
{
char c[7];
char y[7];
int n;
}NODE;

/*int cmp(const void *a,const void *b)
{
return strcmp( (*(node *)a)->str , (*(node *)b)->str );
}*/

int main()
{
//freopen("input.txt", "r", stdin);
NODE node[101];
string str;
int t=0,i,j,temp,flag;
while(cin>>str&&str;!="XXXXXX")
{
node[t].n= str.length();
for(i=0;i<node[t].n;i++)
{
node[t].y[i]=str[i];
node[t].c[i]=str[i];
}
sort(&node;[t].c[0],&node;[t].c[str.length()]);
t++;
}
//qsort(node,t,sizeof(node[0]),cmp);
while(cin>>str&&str;!="XXXXXX")
{
flag=0;
sort(&str;[0],&str;[str.length()]);
for(i=0;i<t;i++)
{
if(int(str.length())==node[i].n)
{
temp=1;
for(j=0;j<node[i].n;j++)
{
if(node[i].c[j]!=str[j])
{
temp=0;
break;
}
}
if(temp==1)
{
cout<<node[i].y<<endl;
flag=1;
}
}
}
if(flag==0)
cout<<"NOT A VALID WORD"<<endl;
cout<<"******"<<endl;

}
}