问题标题: 酷町堂:4508

0
1
已解决
唐三
唐三
中级守护
中级守护

本弱弱求助,4508,90分

错误代码

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,x,y;
int f[25][25];
int dir[5][2]={{0},{1,0},{0,1},{-1,0},{0,-1}};
int main(){
    //freopen("xxx.in","r",stdin);
    //freopen("xxx.out","w",stdout);
    cin>>n>>m>>x>>y;
    if(x==0||y==0){
        f[0][0]=0;
    } 
    else f[0][0]=1;
    for(int j=0;j<=m;j++){
        for(int i=0;i<=n;i++){
            if((i==x+1&&j==y)||(i==x-1&&j==y)||(i==x&&j==y+1)||(i==x&&j==y-1)){
                continue;
            }
            for(int k=1;k<=4;k++){
                int dx=i+dir[k][0],dy=j+dir[k][1];
                if(dx>=0&&dy>=0&&dx<=n&&dy<=m){
                    f[dx][dy]+=f[i][j];
                } 
            }
        }
    }
    cout<<f[n][m];
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

求助!


0
已采纳
臧鸿志
臧鸿志
初级天翼
初级天翼

逻辑很乱,continue少了情况,方向数组到底是用来干嘛的,当前状态只能由左边或者正上方推导,题目说了卒的前进方向,即使用刷表法也不能由当前状态推4个方向吧。不要开小号。

0
0
高子健
高子健
新手天翼
新手天翼

hhh

老师亲自来评论

就很nice

(本来想回答,但,实在不会)

 

0
我要回答