poj 1048 Follow My Logic

搜索
#include <stdio.h>
#include 
<string.h>

char code[110][110];
char num[30];
int p;

void getpoint(int &x, int &y)
{
    
forint i = 0 ; i < 100 ; i++ )
        
for ( int j = 0 ; j < 100 ; j++ )
            
if ( '?' == code[i][j] )
            {
                x
= i;
                y
= j;
                
return;
            }
}

int find(int x, int y, int div, int flag)
{
    
switch(code[x][y])
    {
        
case 'o'return !find(x, y-1-12);
        
case '-'return find(x, y+div, div, flag);
        
case '|'return find(x+div, y, div, flag);
        
case ')'return find(x-1, y-3-12& find(x+1, y-3-12);
        
case '>'return find(x-1, y-3-12| find(x+1, y-3-12);
        
case '+':
            
if ('-' == code[x][y-1&& flag != 4 )
                
return find(x, y-1-12);
            
else if ( '-' == code[x][y+1&& flag != 2 )
                
return find(x, y+114);
            
else if ( '|' == code[x-1][y]  && flag != 1 )
                
return find(x-1, y, -13);
            
else
                
return find(x+1, y, 11);
        
defaultreturn num[ code[x][y]-'A' ]-'0';
    }
}

int main()
{
    memset(code, 
0sizeof(code));
    
while ( EOF != scanf("%[^\n]%*c", code[0]) )
    {
        
int i, x, y, ans;
        
for ( i = 1'*' != code[i-1][0]; i++ )
            gets(code[i]);
        getpoint(x, y);
        
while(gets(num), '*' != num[0])
        {
            
if ('-' == code[x][y-1])
                ans
= find(x, y-1-12);
            
else if ( '-' == code[x][y+1])
                ans
= find(x, y+114);
            
else if ( '|' == code[x-1][y])
                ans
= find(x-1, y, -13);
            
else
                ans
= find(x+1, y, 11);
            printf(
"%d\n", ans);
        }
        putchar(
10);
        memset(code, 
0sizeof(code));
    }
    
return 0;
}

posted on 2011-08-15 00:27 purplest 阅读(188) 评论(0)  编辑 收藏 引用 所属分类: 搜索


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿

随笔分类(70)

随笔档案(68)

ACMer

搜索

最新随笔

最新评论