2013年11月7日 星期四

[ZJ] a820: 101學年度桃竹苗區資訊學科能力競賽 3.小精靈吃數字


#include<stdio.h>
int s[15][15],n,m,ans=0;
void dfs(int x,int y,int t,int add){
    int X,Y;
    if(add==4) return;
    ans+=s[x][y];
    if(t==1){
        x++,y--;
        if(x>n-1 && y<0) x=n-1,y=0,t=3,add++;
        else if(x>n-1) x=n-1,t=4,add++;
        else if(y<0) y=0,t=2,add++;
        dfs(x,y,t,add);
    }
    else if(t==2){
        x++,y++;
        if(x>n-1 && y>m-1) x=n-1,y=m-1,t=4,add++;
        else if(x>n-1) x=n-1,t=3,add++;
        else if(y>m-1) y=m-1,t=1,add++;
        dfs(x,y,t,add);
    }
    else if(t==3){
        x--,y++;
        if(x<0 && y>m-1) x=0,y=m-1,t=1,add++;
        else if(x<0) x=0,t=2,add++;
        else if(y>m-1) y=m-1,t=4,add++;
        dfs(x,y,t,add);
    }
    else if(t==4){
        x--,y--;
        if(x<0 && y<0) x=0,y=0,t=2,add++;
        else if(x<0) x=0,t=1,add++;
        else if(y<0) y=0,t=3,add++;
        dfs(x,y,t,add);
    }
}
int main(){
    int i,j,x,y,t;
    scanf("%d%d",&n,&m);
    x=n,n=m,m=x;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            scanf("%d",&s[i][j]);
    scanf("%d%d%d",&x,&y,&t);
    dfs(y-1,x-1,t,0);
    printf("%d\n",ans);
}

沒有留言:

張貼留言