3 条题解
-
0
#include<bits/stdc++.h> using namespace std; bool ma(int x,int y,int mx,int my) { if((abs(x-mx)==1 && abs(y-my)==2) || (abs(y-my)==1 && abs(x-mx)==2) || (y==my && x==mx)) return 1; return 0; } long long f[25][25]; int main() { int x,y,mx,my;cin >> x >> y >> mx >> my; for(int i=0;i<=x;i++) { for(int j=0;j<=y;j++) { if(ma(i,j,mx,my)) f[i][j] = 0;//马可到达 else if(j==0 && i==0) f[i][j] = 1;//坐标原点 else if(j==0) f[i][j] = f[i-1][j];//左边缘 else if(i==0) f[i][j] = f[i][j-1];//上边缘 else f[i][j] = f[i-1][j]+f[i][j-1];//中间 } } cout << f[x][y]; return 0; }
一定用long long否则60分
-
0
#include <bits/stdc++.h> long long bx,by,mx,my,a[25][25]; int horse(int x,int y){ if(abs(x-mx)==2&&abs(y-my)==1|| abs(x-mx)==1&&abs(y-my)==2)return 1; if(x==mx&&y==my)return 1; return 0;} int main(){ std::cin>>bx>>by>>mx>>my; for(int i=0;i<=bx;i++){ for(int j=0;j<=by;j++){ if(horse(i,j))a[i][j]=0; else if(i==0&&j==0)a[i][j]=1; else if(i==0)a[i][j]=a[i][j-1]; else if(j==0)a[i][j]=a[i-1][j]; else a[i][j]=a[i][j-1]+a[i-1][j];}} std::cout<<a[bx][by]; return 0;}
-
-1
#include<iostream> int bx,by,mx,my; long long f[21][21]; bool check(int x,int y) { if(abs(x-mx)==1&&abs(y-my)==2||abs(x-mx)==2&&abs(y-my)==1)return true; else if(x==mx&&y==my)return true; else return false; } int main() { std::cin>>bx>>by>>mx>>my; for(int i=0;i<=bx;i+=1)for(int j=0;j<=by;j+=1)if(check(i,j))f[i][j]=0;else if(i==0&&j==0)f[i][j]=1;else if(i==0)f[i][j]=f[i][j-1];else if(j==0)f[i][j]=f[i-1][j];else f[i][j]=f[i-1][j]+f[i][j-1]; std::cout<<f[bx][by]; }
- 1
信息
- ID
- 568
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 989
- 已通过
- 312
- 上传者