萌新求助

回复帖子

@星梦童趣Doxitce 2019-06-12 23:51 回复

萌新求助 为什么只有20分?

#include<bits/stdc++.h>
using namespace std;
long long f[100][100];
int s1,s2,n,m;
int main(){
    scanf("%d%d%d%d",&s1,&s2,&n,&m);
    for(int i=1;i<=n;i++) f[i][1]=1;
    for(int i=1;i<=m;i++) f[1][i]=1;
    for(int i=1;i<=s1;i++)
      for(int j=1;j<=s2;j++)
      {
          if(!f[i][j])
          {
              f[i][j]=f[i][j-1]+f[i-1][j];
              if(i==n&&j==m) f[i][j]=0;
              if((i+2==n||i-2==n)&&(j+1==m||j-1==m)) f[i][j]=0;
              if((i+1==n||i-1==n)&&(j+2==m||j-2==m)) f[i][j]=0;
          }
      }
    printf("%lld",f[s1][s2]);
    return 0;
}

0分

#include<bits/stdc++.h>
using namespace std;
long long f[100][100];
int s1,s2,n,m;
int main(){
    scanf("%d%d%d%d",&s1,&s2,&n,&m);
    s1++;
    s2++;
    for(int i=1;i<=s1;i++) f[i][1]=1;
    for(int i=1;i<=s2;i++) f[1][i]=1;
    for(int i=1;i<=s1;i++)
      for(int j=1;j<=s2;j++)
      {
          if(!f[i][j])
          {
              f[i][j]=f[i][j-1]+f[i-1][j];
              if(i==n&&j==m) f[i][j]=0;
              if((i+2==n||i-2==n)&&(j+1==m||j-1==m)) f[i][j]=0;
              if((i+1==n||i-1==n)&&(j+2==m||j-2==m)) f[i][j]=0;
          }
      }
    printf("%lld",f[s1][s2]);
    return 0;
}

40分

#include<bits/stdc++.h>
using namespace std;
long long f[100][100];
int s1,s2,n,m;
int main(){
    scanf("%d%d%d%d",&s1,&s2,&n,&m);
    for(int i=0;i<=s1;i++) f[i][0]=1;
    for(int i=0;i<=s2;i++) f[0][i]=1;
    for(int i=0;i<=s1;i++)
      for(int j=0;j<=s2;j++)
      {
          if(!f[i][j])
          {
              f[i][j]=f[i][j-1]+f[i-1][j];
              if(i==n&&j==m) f[i][j]=0;
              if((i+2==n||i-2==n)&&(j+1==m||j-1==m)) f[i][j]=0;
              if((i+1==n||i-1==n)&&(j+2==m||j-2==m)) f[i][j]=0;
          }
      }
    printf("%lld",f[s1][s2]);
    return 0;
}

@速算王李子 60分

#include<bits/stdc++.h>
using namespace std;
long long f[100][100];
int s1,s2,n,m;
int main(){
    scanf("%d%d%d%d",&s1,&s2,&n,&m);
    for(int i=0;i<=s1;i++) f[i][0]=1;
    for(int i=0;i<=s2;i++) f[0][i]=1;
    for(int i=0;i<=s1;i++)
      for(int j=0;j<=s2;j++)
      {
          if(!f[i][j]) f[i][j]=f[i][j-1]+f[i-1][j];
          if(i==n&&j==m) f[i][j]=0;
          if((i+2==n||i-2==n)&&(j+1==m||j-1==m)) f[i][j]=0;
          if((i+1==n||i-1==n)&&(j+2==m||j-2==m)) f[i][j]=0;
      }
    printf("%lld",f[s1][s2]);
    return 0;
}

100分

#include<bits/stdc++.h>
using namespace std;
long long f[100][100];
int s1,s2,n,m;
int main(){
    scanf("%d%d%d%d",&s1,&s2,&n,&m);
    for(int i=0;i<=s1;i++)
    {
        if(m==0&&i==n) break;
        if(m==1&&(i+2==n||i-2==n)) break;
        if(m==2&&(i+1==n||i-1==n)) break;
        f[i][0]=1;
    }
    for(int i=0;i<=s2;i++)
    {
        if(n==0&&i==m) break;
        if(n==2&&(i+1==m||i-1==m)) break;
        if(n==1&&(i+2==m||i-2==m)) break;
        f[0][i]=1;
    }
    for(int i=0;i<=s1;i++)
      for(int j=0;j<=s2;j++)
      {
          if(i!=0&&j!=0) f[i][j]=f[i][j-1]+f[i-1][j];
          if(i==n&&j==m) f[i][j]=0;
          if((i+2==n||i-2==n)&&(j+1==m||j-1==m)) f[i][j]=0;
          if((i+1==n||i-1==n)&&(j+2==m||j-2==m)) f[i][j]=0;
      }
    printf("%lld",f[s1][s2]);
    return 0;
}
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。