| ||||||||||
| 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 | |||||||||
Re:居然AC,虽然用时和内存都很大,但对我这种菜鸟来说,做出这个题还是很不容易的,只是,其实In Reply To:居然AC,虽然用时和内存都很大,但对我这种菜鸟来说,做出这个题还是很不容易的,只是,其实 Posted by:jiyanmoyu at 2009-09-24 19:18:18 trie[1415][1000]
2^0.5 ~= 1.414
最多1000个单词,每个单词最长对角线长度啊。
> 其实还是有个小地方不解,再看看代码。
> 另外, trie数组的大小到底怎么确定,我是开大数组的。
> int trie[?][27];前面那个?最大会是多少呢?
>
> 附,代码如下
> #include<cstdio>
> #include<cstdlib>
> #include<string>
> #include<iostream>
> using namespace std;
> int trie[100010][28];
> int index[100010];
>
> char table[1010][1010];//这两个为输入
> //char word[1010][1010];
> string word;
> int LL[1010],CC[1010];//这三个记录结果
> char dir[1010];
>
> int L,C,W;
> int row[8]={-1,-1,0,1,1,1,0,-1},col[8]={0,1,1,1,0,-1,-1,-1};
> int main()
> {
> scanf("%d%d%d",&L,&C,&W);
> for(int i=0;i<L;++i)
> scanf("%s",table[i]);
>
> int length=0;
> for(int i=0;i<W;++i)
> {
> cin>>word;
> //scanf("%s",word[i]);
> int start=0,j=0;
> int len=word.length();
> while(j!=len)
> {
> int next=word[j]-'A'+1;
> if(trie[start][next]==0)
> trie[start][next]=++length;
> start=trie[start][next];
> ++j;
> }
> // printf("start=%d\n",start);
> trie[start][0]=-1;
> index[start]=i;
> }
> // printf("%s\n%s\n",table[5],word);
> for(int i=0;i<L;++i)
> {
> for(int j=0;j<C;++j)
> {
> for(int d=0;d<8;++d)
> {
> int start=0;
> int r=i,c=j;
> // printf("i=%d j=%d dir=%c\n",i,j,d+'A');
> do
> {
> int next=table[r][c]-'A'+1;
> start=trie[start][next];
> // printf("start=%d\n",start);
> if(start==0)
> break;
> if(trie[start][0]==-1)
> {
> int k=index[start];
> LL[k]=i;
> CC[k]=j;
> dir[k]='A'+d;
> // printf("k=%d %s\n",k,word[k]);
> // printf("%d %d %c\n",i,j,'A'+d);
> }
> r+=row[d];
> c+=col[d];
> }while(r>=0&&c>=0&&r<L&&c<C);
> }
> }
> }
> for(int i=0;i<W;++i)
> {
> printf("%d %d %c\n",LL[i],CC[i],dir[i]);
> }
> // system("pause");
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator