| ||||||||||
| 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 | |||||||||
Google Trie!In Reply To:请问我应该如何优化啊?谢谢~!! Posted by:xiongxianhe at 2010-05-24 15:27:21 > #include <iostream>
> using namespace std;
>
> #define L 1000
> #define C 1000
> #define W 1000
>
> //inline bool equal(char a,char b){return (a)==(b)? true:false;}
>
> int l,c,w;//获取输入的行与列和单词数
> char letters[L][C];//存放字母表
> char word[W];
> int wordLength=0;//单词的长度
> char orientation;//获取方向
> int firstline,firstcolumn;//第一次出现的位置
>
> void InLetterTable()
> {
> cin>>l>>c>>w;
> for(int i=0;i<l;i++)
> {
> for (int j=0;j<c;j++)
> {
> cin>>letters[i][j];
> }
> }
> }
>
> void InWord()
> {
> char c;
> int i=0;
> while(cin>>noskipws>>c && c!='\n')
> {
> word[i]=c;
> i++;
> }
> wordLength=i;
> }
>
> void InFromFile()
> {
> cin>>l>>c>>w;
> for(int i=0;i<l;i++)
> for(int j=0;j<c;j++)
> cin>>letters[i][j];
> }
>
> char GA(int ll,int lc)
> {
> int wordMove=0;
> while(word[wordMove]==letters[ll][lc] && ll>=0)
> {
> wordMove++;
> ll--;
> }
> if(wordMove==wordLength)
> return 'A';
> else
> return 0;
> }
>
> char GB(int ll,int lc)
> {
> int wordMove=0;
> while(word[wordMove]==letters[ll][lc] && ll>=0 && lc<c)
> {
> wordMove++;
> ll--;
> lc++;
> }
> if(wordMove==wordLength)
> return 'B';
> else
> return 0;
> }
>
> char GC(int ll,int lc)
> {
> int wordMove=0;
> while(word[wordMove]==letters[ll][lc]&& lc<c)
> {
> wordMove++;
> lc++;
> }
> if(wordMove==wordLength)
> return 'C';
> else
> return 0;
> }
>
> char GD(int ll,int lc)
> {
> int wordMove=0;
> while(word[wordMove]==letters[ll][lc] && ll<l && lc<c)
> {
> wordMove++;
> ll++;
> lc++;
> }
> if(wordMove==wordLength)
> return 'D';
> else
> return 0;
> }
>
> char GE(int ll,int lc)
> {
> int wordMove=0;
> while(word[wordMove]==letters[ll][lc] && ll<l)
> {
> wordMove++;
> ll++;
> }
> if(wordMove==wordLength)
> return 'E';
> else
> return 0;
> }
>
> char GF(int ll,int lc)
> {
> int wordMove=0;
> while(word[wordMove]==letters[ll][lc] && ll<l && lc>=0)
> {
> wordMove++;
> ll++;
> lc--;
> }
> if(wordMove==wordLength)
> return 'F';
> else
> return 0;
> }
>
> char GG(int ll,int lc)
> {
> int wordMove=0;
> while(word[wordMove]==letters[ll][lc] && lc>=0)
> {
> wordMove++;
> lc--;
> }
> if(wordMove==wordLength)
> return 'G';
> else
> return 0;
> }
>
> char GH(int ll,int lc)
> {
> int wordMove=0;
> while(word[wordMove]==letters[ll][lc] && ll>=0 && lc>=0)
> {
> wordMove++;
> ll--;
> lc--;
> }
> if(wordMove==wordLength)
> return 'H';
> else
> return 0;
> }
>
>
> void Search()
> {
> for (int i=0;i<l;i++)
> {
> for(int j=0;j<c;j++)
> {
> orientation=0;
> if(i>=wordLength-1)
> orientation=GA(i,j);
> if(orientation == 0 && i>=wordLength-1 && j<=c-wordLength+1)
> orientation=GB(i,j);
> if(orientation == 0 && j<=c-wordLength+1)
> orientation=GC(i,j);
> if(orientation == 0 && i<=l-wordLength+1 && j<=c-wordLength+1)
> orientation=GD(i,j);
> if(orientation == 0 && i<=l-wordLength+1)
> orientation=GE(i,j);
> if(orientation == 0 && i<=l-wordLength+1 && j>=wordLength-1)
> orientation=GF(i,j);
> if(orientation == 0 && j>=wordLength-1)
> orientation=GG(i,j);
> if(orientation == 0 && i>=wordLength -1 && j>=wordLength -1)
> orientation=GH(i,j);
> if(orientation)
> {
> firstline=i;
> firstcolumn=j;
> return;
> }
> }
> }
> }
>
> int main()
> {
> firstcolumn=-1;
> firstline=-1;
> InFromFile();
> InWord();
> while(w--)
> {
> InWord();
> Search();
> cout<<firstline<<" "<<firstcolumn<<" "<<orientation<<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