Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Wa的有点郁闷了。。。谁有时间帮忙看看吧。。。

Posted by Huicpc217 at 2009-04-16 20:43:16 on Problem 1204
#include<iostream>
using namespace std;

#define N 1005

struct node{
    int flag , id ;
    node * ptr [ 26 ] ;
}table[ N * 503 ];
int indexx;

int out[N][3],di[8][2] = { {-1 , 0 },{ -1 , 1 },{0 , 1},{1,1},{1, 0},{1 , -1 },{0,-1},{-1,-1} };

char map[N][N] , rel[N][20];
int yes[N], per[N];

int main()
{
    int i , j , k , n , m , x , y , l ;
    int L , C , W ;
    
    memset ( yes , 0 , sizeof ( yes ));
    
    scanf("%d%d%d",&L,&C,&W);
    for ( i = 0 ; i < L ; i ++ )
    {
        scanf("%s",map[i] );
    }
    for ( i = 0 ; i < W ; i ++ )
        scanf("%s",rel[i]);
    node * head ,* p; 
    indexx = 0 ;
    table[indexx].flag = 0;
    table[indexx].id= -1;
    
    for ( k = 0 ; k < 26 ; k ++ )
    table[indexx].ptr[k] = 0;
    head = & table [ indexx ++ ] ;
    int maxx = 20;
    int cnt = 0;
    char c;
    for ( i = 0 ; i < W ; i ++ )
    {
        l = strlen( rel [i]);
        maxx = maxx > l ? maxx : l;
        p = head ;
        for ( j= 0 ;j < l ; j ++ )
        {
            if ( p -> ptr[ rel[i][j] - 'A' ] == 0 )
            {
                table[indexx].flag = 0;
                table[indexx].id = -1 ;
                for ( k = 0 ; k < 26 ; k ++ )
                table[indexx].ptr[k] = 0;
                p -> ptr[ rel [i][j] - 'A' ] = & table [ indexx ++ ] ;
            }
            p = p -> ptr[ rel [i][j] - 'A' ] ;
        }
        p -> flag = 1 ;
        p -> id = i ;
    }
    for ( i = 0 ; i < W ; i ++ )
    {
        l = strlen ( rel[i] );
        p = head;
        for ( j = 0 ; j < l ; j ++ )
        {
            c = rel [i][j] ;
            if ( p -> ptr[ c - 'A' ] == 0 )
            {
                table [ indexx ].id = -1 ;
                p -> ptr[ c - 'A' ] = & table[ indexx ++ ];
            }
            p = p -> ptr [ c - 'A' ] ;
        }
        p -> id = i ;
        p -> flag = 1 ;
    }
    
    for ( i = 0 ; i < L ; i ++ )
    {
        for ( j = 0 ; j < C ; j ++ )
        {
            for ( k = 0 ; k < 8 ; k ++ )
            {
                x = i ;
                y = j ;
                p = head ;
                for ( l = 0 ; l < maxx + 3 ; l ++ )
                {
                    if( !(x >= 0 && x < L && y >= 0 && y < C) )
                        break;
                    c = map[ x ] [ y ];
                    if ( p -> ptr[ c - 'A' ] == 0 )
                        break;
                    p = p -> ptr[ c - 'A' ] ;
                    if ( p -> id > -1 )
                    {
                        out [ p -> id ] [ 0 ] = i ; 
                        out [ p -> id ] [ 1 ] = j ; 
                        out [ p -> id ] [ 2 ] = k ;
                        yes [ p -> id ] = 1;
                    }
                    x += di[k][0];
                    y += di[k][1];
                }
            }
        }
    }
    for ( i = 0 ; i < W ;i ++ )
    {
        printf("%d %d %c\n",out[i][0],out[i][1],out[i][2] + 'A' );
    }
    system("pause");
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator