萌新求助

P1002 [NOIP2002 普及组] 过河卒

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; } ```
by 星梦童趣Doxitce @ 2019-06-12 23:56:34


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; } ```
by 星梦童趣Doxitce @ 2019-06-13 00:01:23


@[星梦童趣Doxitce](/space/show?uid=26603) f[0][i]和f[i][0]可能是马的控制点,你把它初始化成一后没有再判断 ~~而且你交换了n,m,s1,s2~~
by littleKtian @ 2019-06-13 13:03:00


@[速算王李子](/space/show?uid=104581) orz
by 星梦童趣Doxitce @ 2019-06-18 19:09:47


@[速算王李子](/space/show?uid=104581) 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; } ```
by 星梦童趣Doxitce @ 2019-06-18 19:14:19


@[星梦童趣Doxitce](/space/show?uid=26603) 如果f[i][0]是控制点,后面的f[i+1][0],f[i+2][0]......f[s1][0]都是0
by littleKtian @ 2019-06-19 12:00:08


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; } ```
by 星梦童趣Doxitce @ 2019-06-22 15:39:52


@[星梦童趣Doxitce](/space/show?uid=26603) ###### 变量要用int吧
by YuanZhan @ 2019-06-29 12:55:15


|