⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 daofeng.txt

📁 C++经典算法.rar很经典的
💻 TXT
字号:
 Welcome To Administrator's Page of Judge Online of ACM ICPC, Peking University
  


--------------------------------------------------------------------------------

Source

Problem Id:1048  User Id:daofeng 
Memory:56K  Time:20MS 
Language:C++  Result:Accepted

Source 
#include <iostream.h> 
#include <string.h> 
char c[101][101],d[101][101]; 
bool a[27],b[101][101]; 

void solve(int x,int y,int fromx,int fromy) 
{ 
    if(c[x][y]=='-') 
    { 
        b[x][y]=b[fromx][fromy]; 
        c[x][y]=32; 
        solve(x,2*y-fromy,x,y); 
        return; 
    } else if(c[x][y]==124) 
    { 
        b[x][y]=b[fromx][fromy]; 
        c[x][y]=32; 
        solve(2*x-fromx,y,x,y); 
        return; 
    } else if(c[x][y]=='+') 
    { 
        b[x][y]=b[fromx][fromy]; 
        c[x][y]=32; 
        if(x>0&&(x-1!=fromx||y!=fromy)&&c[x-1][y]==124) 
            solve(x-1,y,x,y); 
        if(x<99&&(x+1!=fromx||y!=fromy)&&c[x+1][y]==124) 
            solve(x+1,y,x,y); 
        if(y>0&&(x!=fromx||y-1!=fromy)&&c[x][y-1]=='-') 
            solve(x,y-1,x,y); 
        if(y<99&&(x!=fromx||y+1!=fromy)&&c[x][y+1]=='-') 
            solve(x,y+1,x,y); 
        return; 
    } else if(c[x][y]=='o') 
    { 
        b[x][y]=!b[fromx][fromy]; 
        c[x][y]=32; 
//        if(x>0&&(x-1!=fromx||y!=fromy)&&c[x-1][y]==124) 
//            solve(x-1,y,x,y); 
//        if(x<100&&(x+1!=fromx||y!=fromy)&&c[x+1][y]==124) 
//            solve(x+1,y,x,y); 
//        if(y>0&&(x!=fromx||y-1!=fromy)&&c[x][y-1]=='-') 
//            solve(x,y-1,x,y); 
//        if(y<100&&(x!=fromx||y+1!=fromy)&&c[x][y+1]=='-') 
            solve(x,y+1,x,y); 
        return; 
    } else if(c[x][y]=='?') 
    { 
        b[x][y]=b[fromx][fromy]; 
        c[x][y]=32; 
        return; 
    } else if(c[x][y]==')') 
    { 
        b[x][y]=b[x-1][y-1]&&b[x+1][y-1]; 
        c[x][y]=32; 
        solve(x,y+1,x,y); 
        return; 
    } else if(c[x][y]=='>') 
    { 
        b[x][y]=b[x-1][y-1]||b[x+1][y-1]; 
        c[x][y]=32; 
        solve(x,y+1,x,y); 
        return; 
    } else if(c[x][y]==':') 
    { 
        b[x][y]=b[fromx][fromy]; 
        c[x][y]=32; 
        solve(x,y+1,x,y); 
        return; 
    } else if(c[x][y]=='\\'||c[x][y]=='/') 
    { 
        b[x][y]=b[fromx][fromy]; 
        c[x][y]=32; 
        return; 
    } else if(c[x][y]==32) 
        return; 
    else if(c[x][y]>='A'&&c[x][y]<='Z') 
    { 
        b[x][y]=a[c[x][y]-'A']; 
        c[x][y]=32; 
//        solve(x,y+1,x,y); 
        if(x>0&&c[x-1][y]==124) 
            solve(x-1,y,x,y); 
        if(x<99&&c[x+1][y]==124) 
            solve(x+1,y,x,y); 
        if(y>0&&c[x][y-1]=='-') 
            solve(x,y-1,x,y); 
        if(y<99&&c[x][y+1]=='-') 
            solve(x,y+1,x,y); 
        return; 
    } 
} 

void main() 
{ 
    int i,l,j,xx,yy; 
    char q[80]; 
    for(i=0;i<=100;i++) 
        for(j=0;j<=100;j++) 
            d[i][j]=0; 
    cin.getline(d[0],101); 
    while(cin) 
    { 
//    cin.getline(d[0],100); 
    i=0; 
    while (d[i][0]!='*') 
    { 
        i++; 
        cin.getline(d[i],101); 
        l=strlen(d[i]); 
        for(j=0;j<l;j++) 
            if(d[i][j]=='?') { 
                xx=i; 
                yy=j; 
            } 
    } 
    l=i-1; 
    cin.getline(q,80); 
    while(q[0]!='*') 
    { 
        for(i=0;i<=l;i++) 
            for(j=0;j<100;j++) 
                c[i][j]=d[i][j]; 
        for(i=0;i<26;i++) 
            if(*(q+i)=='0') a[i]=false; 
            else a[i]=true; 
        for(j=0;j<100;j++) 
            for(i=0;i<=l;i++) 
            { 
                if((c[i][j]>='A'&&c[i][j]<='Z')||c[i][j]==')'||c[i][j]=='>') //continue; 
                solve(i,j,0,0); 
            } 
        cout<<b[xx][yy]<<endl; 
        cin.getline(q,80); 
    } 
    cout<<endl; 
    cin.getline(d[0],101); 
//    cin>>d[0]; 
    } 
} 




 Admin's Home Page 



--------------------------------------------------------------------------------

All Copyright Reserved 2003
Any problem, Please Contact Administrator

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -