| ||||||||||
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