| ||||||||||
| 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 | |||||||||
请问我应该如何优化啊?谢谢~!!#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